Skip to content

Repository files navigation

Evidence Engine

A client-server application for managing evidence on arbitrary scientific topics.

This application is a generalised rewrite of the Climate Science Client and Server (see the Campaign Resources climate page and the online climate science database). Evidence Engine will be able to address any arbitrary topics for which evidence can be evinced. The Java server is based on Spring Boot with GraphQL-Java and manages a MariaDB relational database containing scientific evidence of various categories. The API uses GraphQL over HTTP. Both Java client and Java server use customised code generated by GraphQL Java Generator. The web client is based on the React library and the Next.js web framework. The application uses the Gradle Build System and the pNPM package manager.

This document provides an initial outline functional specification of the planned features.

Lists

The application supports lists of the following entities:

  • Claim: an assertion or factual statement that is supported by evidence, generally of a scientific nature
  • Declaration: a public declaration or open letter signed by multiple individuals
  • Person: an individual who makes or endorses claims, signs declarations, makes public statements or is listed as a publication author
  • Publication: A publication containing evidence, for example an article in a scientific journal, book, newspaper, etc.
  • Quotation: a spoken or written statement taken verbatim from a declaration, publication or person

Filtering

The lists can be filtered by any combination of topic, master record and keyword, the latter being a simple search that performs a case-insensitive match against all searchable text fields for the list's entity type.

Sorting

Each list can be individually sorted on any of its displayed columns, in either ascending (the default) or descending order.

Ordering

The entity lists themselves can be manually reordered relative to each other by drag-and-drop. When a list is designated the master list, it is automatically moved to the first position in the UI.

Topics

List entities are categorised according to a hierarchical tree of topics, of arbitrary depth. Top-level topics have no parent topic, whereas sub-topics have a parent topic (which may itself be a sub-topic). An entity must be associated with at least one topic.

Topic Filter

The topic filter is always active and applies to all lists. It allows the selection of a target topic, which can be at any level in the hierarchy. Lists show only those entities which are associated with the target topic or, recursively, any of its sub-topics. This makes it easy to drill down into a specific sub-topic of interest in order to see just those entities which pertain directly to that sub-topic.

Relationships

The user can designate one of the lists as the master, whereupon the other lists will reflect the following relationships with respect to the currently selected record in the master list:

MasterClaimDeclarationQuotationPublicationPerson
None(all)(all)(all)(all)(all)
Claim(all)decl'ns making claimquotes making claimpub'ns supporting claimclaimants
Declarationclaims by decl'n(all)quotes from decl'nn/asignatories of decl'n
Quotationclaims by quot'nsource decl'n(all)source pub?quotee(s)
Publicationclaims by pub'nn/aquotes from pub(all)authors of pub
Personclaims by persondecl'ns signed by personquotes from personpubn's authored by person(all)

Master

When a master list is designated, the other lists are filtered where applicable by the unique foreign key for the currently selected record in the master list:

MasterClaimDeclarationQuotationPublicationPerson
None(null)(null)(null)(null)(null)
Claim(null)claim_idclaim_idclaim_idclaim_id
Declarationdeclaration_id(null)declaration_idn/adeclaration_id
Quotationquotation_idquotation_id(null)quotation_idquotation_id
Publicationpublication_idn/apublication_id(null)publication_id
Personperson_idperson_idperson_idperson_id(null)

Operations

The system supports the usual CRUD operations (create, read, update, delete) for each entity type. Deletion is implemented by flagging an entity record as deleted rather than physical deletion. This is to avoid the possibility of inadvertent catastrophic data loss.

It will also be possible to export the filtered/sorted list data in both CSV format for inclusion in spreadsheets, etc., and in PDF format as standalone documents.

Authentication and authorisation

A credentialled user can sign into the system. Doing so activates any permissions they have, such as:

  • view log entries
  • create record
  • update record
  • delete record
  • link/unlink records

Q: Should we insist on two-way SSL (client certificates)? Doing so would add considerable complexity to both server and client, including keystore and key management UI.

Preferences

User preferences persist between sessions and include:

  • the order of the entity lists for each master setting
  • whether toolbars are visible
  • expanded/collapsed state for each list
  • expanded/collapsed state for each details panel
  • the sort order for each list
  • the filter for each list

There is a means to clear all such preferences back to their default setting.

There is the possibility of allowing users to define and manage custom profiles, each consisting of a collection of such settings. This would assist specific research efforts. We could have standard system-defined profiles as well.

Logging

The system maintains a log of all inserts, updates and deletes, and log entries can be retrieved for any specific entity record. The system allows deleted records to be restored. (Inserts and updates show the new field values : maybe?)

About

A client-server application for managing evidence on arbitrary scientific topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

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

Repository files navigation

Evidence Engine

A client-server application for managing evidence on arbitrary scientific topics.

This application is a generalised rewrite of the Climate Science Client and Server (see the Campaign Resources climate page and the online climate science database). Evidence Engine will be able to address any arbitrary topics for which evidence can be evinced. The Java server is based on Spring Boot with GraphQL-Java and manages a MariaDB relational database containing scientific evidence of various categories. The API uses GraphQL over HTTP. Both Java client and Java server use customised code generated by GraphQL Java Generator. The web client is based on the React library and the Next.js web framework. The application uses the Gradle Build System and the pNPM package manager.

This document provides an initial outline functional specification of the planned features.

Lists

The application supports lists of the following entities:

  • Claim: an assertion or factual statement that is supported by evidence, generally of a scientific nature
  • Declaration: a public declaration or open letter signed by multiple individuals
  • Person: an individual who makes or endorses claims, signs declarations, makes public statements or is listed as a publication author
  • Publication: A publication containing evidence, for example an article in a scientific journal, book, newspaper, etc.
  • Quotation: a spoken or written statement taken verbatim from a declaration, publication or person

Filtering

The lists can be filtered by any combination of topic, master record and keyword, the latter being a simple search that performs a case-insensitive match against all searchable text fields for the list's entity type.

Sorting

Each list can be individually sorted on any of its displayed columns, in either ascending (the default) or descending order.

Ordering

The entity lists themselves can be manually reordered relative to each other by drag-and-drop. When a list is designated the master list, it is automatically moved to the first position in the UI.

Topics

List entities are categorised according to a hierarchical tree of topics, of arbitrary depth. Top-level topics have no parent topic, whereas sub-topics have a parent topic (which may itself be a sub-topic). An entity must be associated with at least one topic.

Topic Filter

The topic filter is always active and applies to all lists. It allows the selection of a target topic, which can be at any level in the hierarchy. Lists show only those entities which are associated with the target topic or, recursively, any of its sub-topics. This makes it easy to drill down into a specific sub-topic of interest in order to see just those entities which pertain directly to that sub-topic.

Relationships

The user can designate one of the lists as the master, whereupon the other lists will reflect the following relationships with respect to the currently selected record in the master list:

MasterClaimDeclarationQuotationPublicationPerson
None(all)(all)(all)(all)(all)
Claim(all)decl'ns making claimquotes making claimpub'ns supporting claimclaimants
Declarationclaims by decl'n(all)quotes from decl'nn/asignatories of decl'n
Quotationclaims by quot'nsource decl'n(all)source pub?quotee(s)
Publicationclaims by pub'nn/aquotes from pub(all)authors of pub
Personclaims by persondecl'ns signed by personquotes from personpubn's authored by person(all)

Master

When a master list is designated, the other lists are filtered where applicable by the unique foreign key for the currently selected record in the master list:

MasterClaimDeclarationQuotationPublicationPerson
None(null)(null)(null)(null)(null)
Claim(null)claim_idclaim_idclaim_idclaim_id
Declarationdeclaration_id(null)declaration_idn/adeclaration_id
Quotationquotation_idquotation_id(null)quotation_idquotation_id
Publicationpublication_idn/apublication_id(null)publication_id
Personperson_idperson_idperson_idperson_id(null)

Operations

The system supports the usual CRUD operations (create, read, update, delete) for each entity type. Deletion is implemented by flagging an entity record as deleted rather than physical deletion. This is to avoid the possibility of inadvertent catastrophic data loss.

It will also be possible to export the filtered/sorted list data in both CSV format for inclusion in spreadsheets, etc., and in PDF format as standalone documents.

Authentication and authorisation

A credentialled user can sign into the system. Doing so activates any permissions they have, such as:

  • view log entries
  • create record
  • update record
  • delete record
  • link/unlink records

Q: Should we insist on two-way SSL (client certificates)? Doing so would add considerable complexity to both server and client, including keystore and key management UI.

Preferences

User preferences persist between sessions and include:

  • the order of the entity lists for each master setting
  • whether toolbars are visible
  • expanded/collapsed state for each list
  • expanded/collapsed state for each details panel
  • the sort order for each list
  • the filter for each list

There is a means to clear all such preferences back to their default setting.

There is the possibility of allowing users to define and manage custom profiles, each consisting of a collection of such settings. This would assist specific research efforts. We could have standard system-defined profiles as well.

Logging

The system maintains a log of all inserts, updates and deletes, and log entries can be retrieved for any specific entity record. The system allows deleted records to be restored. (Inserts and updates show the new field values : maybe?)

About

A client-server application for managing evidence on arbitrary scientific topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

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

Repository files navigation

Evidence Engine

A client-server application for managing evidence on arbitrary scientific topics.

This application is a generalised rewrite of the Climate Science Client and Server (see the Campaign Resources climate page and the online climate science database). Evidence Engine will be able to address any arbitrary topics for which evidence can be evinced. The Java server is based on Spring Boot with GraphQL-Java and manages a MariaDB relational database containing scientific evidence of various categories. The API uses GraphQL over HTTP. Both Java client and Java server use customised code generated by GraphQL Java Generator. The web client is based on the React library and the Next.js web framework. The application uses the Gradle Build System and the pNPM package manager.

This document provides an initial outline functional specification of the planned features.

Lists

The application supports lists of the following entities:

  • Claim: an assertion or factual statement that is supported by evidence, generally of a scientific nature
  • Declaration: a public declaration or open letter signed by multiple individuals
  • Person: an individual who makes or endorses claims, signs declarations, makes public statements or is listed as a publication author
  • Publication: A publication containing evidence, for example an article in a scientific journal, book, newspaper, etc.
  • Quotation: a spoken or written statement taken verbatim from a declaration, publication or person

Filtering

The lists can be filtered by any combination of topic, master record and keyword, the latter being a simple search that performs a case-insensitive match against all searchable text fields for the list's entity type.

Sorting

Each list can be individually sorted on any of its displayed columns, in either ascending (the default) or descending order.

Ordering

The entity lists themselves can be manually reordered relative to each other by drag-and-drop. When a list is designated the master list, it is automatically moved to the first position in the UI.

Topics

List entities are categorised according to a hierarchical tree of topics, of arbitrary depth. Top-level topics have no parent topic, whereas sub-topics have a parent topic (which may itself be a sub-topic). An entity must be associated with at least one topic.

Topic Filter

The topic filter is always active and applies to all lists. It allows the selection of a target topic, which can be at any level in the hierarchy. Lists show only those entities which are associated with the target topic or, recursively, any of its sub-topics. This makes it easy to drill down into a specific sub-topic of interest in order to see just those entities which pertain directly to that sub-topic.

Relationships

The user can designate one of the lists as the master, whereupon the other lists will reflect the following relationships with respect to the currently selected record in the master list:

MasterClaimDeclarationQuotationPublicationPerson
None(all)(all)(all)(all)(all)
Claim(all)decl'ns making claimquotes making claimpub'ns supporting claimclaimants
Declarationclaims by decl'n(all)quotes from decl'nn/asignatories of decl'n
Quotationclaims by quot'nsource decl'n(all)source pub?quotee(s)
Publicationclaims by pub'nn/aquotes from pub(all)authors of pub
Personclaims by persondecl'ns signed by personquotes from personpubn's authored by person(all)

Master

When a master list is designated, the other lists are filtered where applicable by the unique foreign key for the currently selected record in the master list:

MasterClaimDeclarationQuotationPublicationPerson
None(null)(null)(null)(null)(null)
Claim(null)claim_idclaim_idclaim_idclaim_id
Declarationdeclaration_id(null)declaration_idn/adeclaration_id
Quotationquotation_idquotation_id(null)quotation_idquotation_id
Publicationpublication_idn/apublication_id(null)publication_id
Personperson_idperson_idperson_idperson_id(null)

Operations

The system supports the usual CRUD operations (create, read, update, delete) for each entity type. Deletion is implemented by flagging an entity record as deleted rather than physical deletion. This is to avoid the possibility of inadvertent catastrophic data loss.

It will also be possible to export the filtered/sorted list data in both CSV format for inclusion in spreadsheets, etc., and in PDF format as standalone documents.

Authentication and authorisation

A credentialled user can sign into the system. Doing so activates any permissions they have, such as:

  • view log entries
  • create record
  • update record
  • delete record
  • link/unlink records

Q: Should we insist on two-way SSL (client certificates)? Doing so would add considerable complexity to both server and client, including keystore and key management UI.

Preferences

User preferences persist between sessions and include:

  • the order of the entity lists for each master setting
  • whether toolbars are visible
  • expanded/collapsed state for each list
  • expanded/collapsed state for each details panel
  • the sort order for each list
  • the filter for each list

There is a means to clear all such preferences back to their default setting.

There is the possibility of allowing users to define and manage custom profiles, each consisting of a collection of such settings. This would assist specific research efforts. We could have standard system-defined profiles as well.

Logging

The system maintains a log of all inserts, updates and deletes, and log entries can be retrieved for any specific entity record. The system allows deleted records to be restored. (Inserts and updates show the new field values : maybe?)

About

A client-server application for managing evidence on arbitrary scientific topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

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

Repository files navigation

Evidence Engine

A client-server application for managing evidence on arbitrary scientific topics.

This application is a generalised rewrite of the Climate Science Client and Server (see the Campaign Resources climate page and the online climate science database). Evidence Engine will be able to address any arbitrary topics for which evidence can be evinced. The Java server is based on Spring Boot with GraphQL-Java and manages a MariaDB relational database containing scientific evidence of various categories. The API uses GraphQL over HTTP. Both Java client and Java server use customised code generated by GraphQL Java Generator. The web client is based on the React library and the Next.js web framework. The application uses the Gradle Build System and the pNPM package manager.

This document provides an initial outline functional specification of the planned features.

Lists

The application supports lists of the following entities:

  • Claim: an assertion or factual statement that is supported by evidence, generally of a scientific nature
  • Declaration: a public declaration or open letter signed by multiple individuals
  • Person: an individual who makes or endorses claims, signs declarations, makes public statements or is listed as a publication author
  • Publication: A publication containing evidence, for example an article in a scientific journal, book, newspaper, etc.
  • Quotation: a spoken or written statement taken verbatim from a declaration, publication or person

Filtering

The lists can be filtered by any combination of topic, master record and keyword, the latter being a simple search that performs a case-insensitive match against all searchable text fields for the list's entity type.

Sorting

Each list can be individually sorted on any of its displayed columns, in either ascending (the default) or descending order.

Ordering

The entity lists themselves can be manually reordered relative to each other by drag-and-drop. When a list is designated the master list, it is automatically moved to the first position in the UI.

Topics

List entities are categorised according to a hierarchical tree of topics, of arbitrary depth. Top-level topics have no parent topic, whereas sub-topics have a parent topic (which may itself be a sub-topic). An entity must be associated with at least one topic.

Topic Filter

The topic filter is always active and applies to all lists. It allows the selection of a target topic, which can be at any level in the hierarchy. Lists show only those entities which are associated with the target topic or, recursively, any of its sub-topics. This makes it easy to drill down into a specific sub-topic of interest in order to see just those entities which pertain directly to that sub-topic.

Relationships

The user can designate one of the lists as the master, whereupon the other lists will reflect the following relationships with respect to the currently selected record in the master list:

MasterClaimDeclarationQuotationPublicationPerson
None(all)(all)(all)(all)(all)
Claim(all)decl'ns making claimquotes making claimpub'ns supporting claimclaimants
Declarationclaims by decl'n(all)quotes from decl'nn/asignatories of decl'n
Quotationclaims by quot'nsource decl'n(all)source pub?quotee(s)
Publicationclaims by pub'nn/aquotes from pub(all)authors of pub
Personclaims by persondecl'ns signed by personquotes from personpubn's authored by person(all)

Master

When a master list is designated, the other lists are filtered where applicable by the unique foreign key for the currently selected record in the master list:

MasterClaimDeclarationQuotationPublicationPerson
None(null)(null)(null)(null)(null)
Claim(null)claim_idclaim_idclaim_idclaim_id
Declarationdeclaration_id(null)declaration_idn/adeclaration_id
Quotationquotation_idquotation_id(null)quotation_idquotation_id
Publicationpublication_idn/apublication_id(null)publication_id
Personperson_idperson_idperson_idperson_id(null)

Operations

The system supports the usual CRUD operations (create, read, update, delete) for each entity type. Deletion is implemented by flagging an entity record as deleted rather than physical deletion. This is to avoid the possibility of inadvertent catastrophic data loss.

It will also be possible to export the filtered/sorted list data in both CSV format for inclusion in spreadsheets, etc., and in PDF format as standalone documents.

Authentication and authorisation

A credentialled user can sign into the system. Doing so activates any permissions they have, such as:

  • view log entries
  • create record
  • update record
  • delete record
  • link/unlink records

Q: Should we insist on two-way SSL (client certificates)? Doing so would add considerable complexity to both server and client, including keystore and key management UI.

Preferences

User preferences persist between sessions and include:

  • the order of the entity lists for each master setting
  • whether toolbars are visible
  • expanded/collapsed state for each list
  • expanded/collapsed state for each details panel
  • the sort order for each list
  • the filter for each list

There is a means to clear all such preferences back to their default setting.

There is the possibility of allowing users to define and manage custom profiles, each consisting of a collection of such settings. This would assist specific research efforts. We could have standard system-defined profiles as well.

Logging

The system maintains a log of all inserts, updates and deletes, and log entries can be retrieved for any specific entity record. The system allows deleted records to be restored. (Inserts and updates show the new field values : maybe?)

About

A client-server application for managing evidence on arbitrary scientific topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

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

Repository files navigation

Evidence Engine

A client-server application for managing evidence on arbitrary scientific topics.

This application is a generalised rewrite of the Climate Science Client and Server (see the Campaign Resources climate page and the online climate science database). Evidence Engine will be able to address any arbitrary topics for which evidence can be evinced. The Java server is based on Spring Boot with GraphQL-Java and manages a MariaDB relational database containing scientific evidence of various categories. The API uses GraphQL over HTTP. Both Java client and Java server use customised code generated by GraphQL Java Generator. The web client is based on the React library and the Next.js web framework. The application uses the Gradle Build System and the pNPM package manager.

This document provides an initial outline functional specification of the planned features.

Lists

The application supports lists of the following entities:

  • Claim: an assertion or factual statement that is supported by evidence, generally of a scientific nature
  • Declaration: a public declaration or open letter signed by multiple individuals
  • Person: an individual who makes or endorses claims, signs declarations, makes public statements or is listed as a publication author
  • Publication: A publication containing evidence, for example an article in a scientific journal, book, newspaper, etc.
  • Quotation: a spoken or written statement taken verbatim from a declaration, publication or person

Filtering

The lists can be filtered by any combination of topic, master record and keyword, the latter being a simple search that performs a case-insensitive match against all searchable text fields for the list's entity type.

Sorting

Each list can be individually sorted on any of its displayed columns, in either ascending (the default) or descending order.

Ordering

The entity lists themselves can be manually reordered relative to each other by drag-and-drop. When a list is designated the master list, it is automatically moved to the first position in the UI.

Topics

List entities are categorised according to a hierarchical tree of topics, of arbitrary depth. Top-level topics have no parent topic, whereas sub-topics have a parent topic (which may itself be a sub-topic). An entity must be associated with at least one topic.

Topic Filter

The topic filter is always active and applies to all lists. It allows the selection of a target topic, which can be at any level in the hierarchy. Lists show only those entities which are associated with the target topic or, recursively, any of its sub-topics. This makes it easy to drill down into a specific sub-topic of interest in order to see just those entities which pertain directly to that sub-topic.

Relationships

The user can designate one of the lists as the master, whereupon the other lists will reflect the following relationships with respect to the currently selected record in the master list:

MasterClaimDeclarationQuotationPublicationPerson
None(all)(all)(all)(all)(all)
Claim(all)decl'ns making claimquotes making claimpub'ns supporting claimclaimants
Declarationclaims by decl'n(all)quotes from decl'nn/asignatories of decl'n
Quotationclaims by quot'nsource decl'n(all)source pub?quotee(s)
Publicationclaims by pub'nn/aquotes from pub(all)authors of pub
Personclaims by persondecl'ns signed by personquotes from personpubn's authored by person(all)

Master

When a master list is designated, the other lists are filtered where applicable by the unique foreign key for the currently selected record in the master list:

MasterClaimDeclarationQuotationPublicationPerson
None(null)(null)(null)(null)(null)
Claim(null)claim_idclaim_idclaim_idclaim_id
Declarationdeclaration_id(null)declaration_idn/adeclaration_id
Quotationquotation_idquotation_id(null)quotation_idquotation_id
Publicationpublication_idn/apublication_id(null)publication_id
Personperson_idperson_idperson_idperson_id(null)

Operations

The system supports the usual CRUD operations (create, read, update, delete) for each entity type. Deletion is implemented by flagging an entity record as deleted rather than physical deletion. This is to avoid the possibility of inadvertent catastrophic data loss.

It will also be possible to export the filtered/sorted list data in both CSV format for inclusion in spreadsheets, etc., and in PDF format as standalone documents.

Authentication and authorisation

A credentialled user can sign into the system. Doing so activates any permissions they have, such as:

  • view log entries
  • create record
  • update record
  • delete record
  • link/unlink records

Q: Should we insist on two-way SSL (client certificates)? Doing so would add considerable complexity to both server and client, including keystore and key management UI.

Preferences

User preferences persist between sessions and include:

  • the order of the entity lists for each master setting
  • whether toolbars are visible
  • expanded/collapsed state for each list
  • expanded/collapsed state for each details panel
  • the sort order for each list
  • the filter for each list

There is a means to clear all such preferences back to their default setting.

There is the possibility of allowing users to define and manage custom profiles, each consisting of a collection of such settings. This would assist specific research efforts. We could have standard system-defined profiles as well.

Logging

The system maintains a log of all inserts, updates and deletes, and log entries can be retrieved for any specific entity record. The system allows deleted records to be restored. (Inserts and updates show the new field values : maybe?)

About

A client-server application for managing evidence on arbitrary scientific topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

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

Repository files navigation

Evidence Engine

A client-server application for managing evidence on arbitrary scientific topics.

This application is a generalised rewrite of the Climate Science Client and Server (see the Campaign Resources climate page and the online climate science database). Evidence Engine will be able to address any arbitrary topics for which evidence can be evinced. The Java server is based on Spring Boot with GraphQL-Java and manages a MariaDB relational database containing scientific evidence of various categories. The API uses GraphQL over HTTP. Both Java client and Java server use customised code generated by GraphQL Java Generator. The web client is based on the React library and the Next.js web framework. The application uses the Gradle Build System and the pNPM package manager.

This document provides an initial outline functional specification of the planned features.

Lists

The application supports lists of the following entities:

  • Claim: an assertion or factual statement that is supported by evidence, generally of a scientific nature
  • Declaration: a public declaration or open letter signed by multiple individuals
  • Person: an individual who makes or endorses claims, signs declarations, makes public statements or is listed as a publication author
  • Publication: A publication containing evidence, for example an article in a scientific journal, book, newspaper, etc.
  • Quotation: a spoken or written statement taken verbatim from a declaration, publication or person

Filtering

The lists can be filtered by any combination of topic, master record and keyword, the latter being a simple search that performs a case-insensitive match against all searchable text fields for the list's entity type.

Sorting

Each list can be individually sorted on any of its displayed columns, in either ascending (the default) or descending order.

Ordering

The entity lists themselves can be manually reordered relative to each other by drag-and-drop. When a list is designated the master list, it is automatically moved to the first position in the UI.

Topics

List entities are categorised according to a hierarchical tree of topics, of arbitrary depth. Top-level topics have no parent topic, whereas sub-topics have a parent topic (which may itself be a sub-topic). An entity must be associated with at least one topic.

Topic Filter

The topic filter is always active and applies to all lists. It allows the selection of a target topic, which can be at any level in the hierarchy. Lists show only those entities which are associated with the target topic or, recursively, any of its sub-topics. This makes it easy to drill down into a specific sub-topic of interest in order to see just those entities which pertain directly to that sub-topic.

Relationships

The user can designate one of the lists as the master, whereupon the other lists will reflect the following relationships with respect to the currently selected record in the master list:

MasterClaimDeclarationQuotationPublicationPerson
None(all)(all)(all)(all)(all)
Claim(all)decl'ns making claimquotes making claimpub'ns supporting claimclaimants
Declarationclaims by decl'n(all)quotes from decl'nn/asignatories of decl'n
Quotationclaims by quot'nsource decl'n(all)source pub?quotee(s)
Publicationclaims by pub'nn/aquotes from pub(all)authors of pub
Personclaims by persondecl'ns signed by personquotes from personpubn's authored by person(all)

Master

When a master list is designated, the other lists are filtered where applicable by the unique foreign key for the currently selected record in the master list:

MasterClaimDeclarationQuotationPublicationPerson
None(null)(null)(null)(null)(null)
Claim(null)claim_idclaim_idclaim_idclaim_id
Declarationdeclaration_id(null)declaration_idn/adeclaration_id
Quotationquotation_idquotation_id(null)quotation_idquotation_id
Publicationpublication_idn/apublication_id(null)publication_id
Personperson_idperson_idperson_idperson_id(null)

Operations

The system supports the usual CRUD operations (create, read, update, delete) for each entity type. Deletion is implemented by flagging an entity record as deleted rather than physical deletion. This is to avoid the possibility of inadvertent catastrophic data loss.

It will also be possible to export the filtered/sorted list data in both CSV format for inclusion in spreadsheets, etc., and in PDF format as standalone documents.

Authentication and authorisation

A credentialled user can sign into the system. Doing so activates any permissions they have, such as:

  • view log entries
  • create record
  • update record
  • delete record
  • link/unlink records

Q: Should we insist on two-way SSL (client certificates)? Doing so would add considerable complexity to both server and client, including keystore and key management UI.

Preferences

User preferences persist between sessions and include:

  • the order of the entity lists for each master setting
  • whether toolbars are visible
  • expanded/collapsed state for each list
  • expanded/collapsed state for each details panel
  • the sort order for each list
  • the filter for each list

There is a means to clear all such preferences back to their default setting.

There is the possibility of allowing users to define and manage custom profiles, each consisting of a collection of such settings. This would assist specific research efforts. We could have standard system-defined profiles as well.

Logging

The system maintains a log of all inserts, updates and deletes, and log entries can be retrieved for any specific entity record. The system allows deleted records to be restored. (Inserts and updates show the new field values : maybe?)

About

A client-server application for managing evidence on arbitrary scientific topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); GitHub - demonfiddler/evidence-engine: A client-server application for managing evidence on arbitrary scientific topics · GitHub
Skip to content

Repository files navigation

Evidence Engine

A client-server application for managing evidence on arbitrary scientific topics.

This application is a generalised rewrite of the Climate Science Client and Server (see the Campaign Resources climate page and the online climate science database). Evidence Engine will be able to address any arbitrary topics for which evidence can be evinced. The Java server is based on Spring Boot with GraphQL-Java and manages a MariaDB relational database containing scientific evidence of various categories. The API uses GraphQL over HTTP. Both Java client and Java server use customised code generated by GraphQL Java Generator. The web client is based on the React library and the Next.js web framework. The application uses the Gradle Build System and the pNPM package manager.

This document provides an initial outline functional specification of the planned features.

Lists

The application supports lists of the following entities:

  • Claim: an assertion or factual statement that is supported by evidence, generally of a scientific nature
  • Declaration: a public declaration or open letter signed by multiple individuals
  • Person: an individual who makes or endorses claims, signs declarations, makes public statements or is listed as a publication author
  • Publication: A publication containing evidence, for example an article in a scientific journal, book, newspaper, etc.
  • Quotation: a spoken or written statement taken verbatim from a declaration, publication or person

Filtering

The lists can be filtered by any combination of topic, master record and keyword, the latter being a simple search that performs a case-insensitive match against all searchable text fields for the list's entity type.

Sorting

Each list can be individually sorted on any of its displayed columns, in either ascending (the default) or descending order.

Ordering

The entity lists themselves can be manually reordered relative to each other by drag-and-drop. When a list is designated the master list, it is automatically moved to the first position in the UI.

Topics

List entities are categorised according to a hierarchical tree of topics, of arbitrary depth. Top-level topics have no parent topic, whereas sub-topics have a parent topic (which may itself be a sub-topic). An entity must be associated with at least one topic.

Topic Filter

The topic filter is always active and applies to all lists. It allows the selection of a target topic, which can be at any level in the hierarchy. Lists show only those entities which are associated with the target topic or, recursively, any of its sub-topics. This makes it easy to drill down into a specific sub-topic of interest in order to see just those entities which pertain directly to that sub-topic.

Relationships

The user can designate one of the lists as the master, whereupon the other lists will reflect the following relationships with respect to the currently selected record in the master list:

MasterClaimDeclarationQuotationPublicationPerson
None(all)(all)(all)(all)(all)
Claim(all)decl'ns making claimquotes making claimpub'ns supporting claimclaimants
Declarationclaims by decl'n(all)quotes from decl'nn/asignatories of decl'n
Quotationclaims by quot'nsource decl'n(all)source pub?quotee(s)
Publicationclaims by pub'nn/aquotes from pub(all)authors of pub
Personclaims by persondecl'ns signed by personquotes from personpubn's authored by person(all)

Master

When a master list is designated, the other lists are filtered where applicable by the unique foreign key for the currently selected record in the master list:

MasterClaimDeclarationQuotationPublicationPerson
None(null)(null)(null)(null)(null)
Claim(null)claim_idclaim_idclaim_idclaim_id
Declarationdeclaration_id(null)declaration_idn/adeclaration_id
Quotationquotation_idquotation_id(null)quotation_idquotation_id
Publicationpublication_idn/apublication_id(null)publication_id
Personperson_idperson_idperson_idperson_id(null)

Operations

The system supports the usual CRUD operations (create, read, update, delete) for each entity type. Deletion is implemented by flagging an entity record as deleted rather than physical deletion. This is to avoid the possibility of inadvertent catastrophic data loss.

It will also be possible to export the filtered/sorted list data in both CSV format for inclusion in spreadsheets, etc., and in PDF format as standalone documents.

Authentication and authorisation

A credentialled user can sign into the system. Doing so activates any permissions they have, such as:

  • view log entries
  • create record
  • update record
  • delete record
  • link/unlink records

Q: Should we insist on two-way SSL (client certificates)? Doing so would add considerable complexity to both server and client, including keystore and key management UI.

Preferences

User preferences persist between sessions and include:

  • the order of the entity lists for each master setting
  • whether toolbars are visible
  • expanded/collapsed state for each list
  • expanded/collapsed state for each details panel
  • the sort order for each list
  • the filter for each list

There is a means to clear all such preferences back to their default setting.

There is the possibility of allowing users to define and manage custom profiles, each consisting of a collection of such settings. This would assist specific research efforts. We could have standard system-defined profiles as well.

Logging

The system maintains a log of all inserts, updates and deletes, and log entries can be retrieved for any specific entity record. The system allows deleted records to be restored. (Inserts and updates show the new field values : maybe?)

About

A client-server application for managing evidence on arbitrary scientific topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages