VSM(Visual Syntax Method)
Representing any knowledge in a computable form, made easy.
VSM enables people to put knowledge in a computable form, ‘like they think’.
• VSM’s semantic model reflects how knowledge is represented in the human mind;
• and its user interface enables one to read & enter knowledge in that intuitive form.
VSM is thus a human-centered method for creating
context-rich, multi-topic, computable knowledge – and
a gateway to any other format and to computation.
VSM’s elegant knowledge representation may also
serve as a practical basis in the design of semantic machine learning.
Here we collect all information on VSM:
-
Intros:
-
How VSM works:
-
‘Intuitive Representation of Computable Knowledge’
(Main Paper — Preprint, 2020)
Scientific progress is increasingly dependent on knowledge in computation-ready
forms. In the life sciences, among others, many scientists therefore extract and
structure knowledge from the literature. In a process called manual curation,
they enter knowledge into spreadsheets, or into databases where it serves their
and many others' research. Valuable as these curation efforts are, the range and
detail of what can practically be captured and shared remains limited, because
of the constraints of current curation tools. Many important contextual aspects
of observations described in literature simply do not fit in the form defined by
these tools, and thus cannot be captured. Here we present the design of an easy-
to-use, general-purpose method and interface, that enables the precise semantic
capture of virtually unlimited types of information and details, using only a
minimal set of building blocks. Scientists from any discipline can use this to
convert any complex knowledge into a form that is easily readable and meaningful
for both humans and computers. The method VSM forms a universal and high-level
language for encoding ideas, and for interacting with digital knowledge.
-
GIF animation:
entering knowledge into computable statements
(vsm-box interface).
-
Video animation:
converting text to VSM, automatically
(ongoing research).
-
Demos:
-
Code:
-
Use in other projects:
-
causalBuilder:
A web app that generates VSM-templates that follow the
MI2CAST
standard,
for molecular biologists who are creating structured knowledge about
causal molecular interactions.
(Uses VSM-box).
-
NLP to VSM:
(as part of
BLAH7 hackathon):
-
nlp-to-vsm repo:
‘From natural language to VSM semantic structures’.
-
live demo page
(pilot study experiment).
-
UniBioDicts organization:
A set of modules that give Unified access to Biological Dictionary data,
served from different terminology providers' APIs.
(For use in VSM-boxes).
-
SciCura:
-
SciCura v1, see demo section
(← select a template at the top left there);
used for a collaborative curation project at NTNU university.
-
SciCura v1 to v2:
draft description.
-
Connection to other technologies:
-
VSM to RDF:
translation of VSM-sentences to RDF
(draft, work in progress).
-
E.g. output to the
PSI-MITAB2.8
format
(via causalBuilder).
-
NLP to VSM: see above.
Overview and examples:
How to create and read computable knowledge in a vsm-box.
It is easy to use a vsm-box in your project.
For example: paste this in a file called 'test.html', and open it in your browser:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<!-- 1) Load the vsm-box module, and a vsm-dictionary to provide terms+identifiers. -->
<script src="https://cdn.jsdelivr.net/npm/vsm-box@^1.0.0/dist/vsm-box.standalone.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vsm-dictionary-local@^2.6.0/dist/vsm-dictionary-local.min.js"></script>
</head>
<body>
<!-- 2) Place a vsm-box element on the web page. -->
<vsm-box id=vsmbox autofocus=true></vsm-box>
<br> <textarea id=textarea readonly rows=31 cols=45></textarea> <!-- (Textfield for showing vsm-box's data content). -->
</body>
<script>
// 3) Connect the vsm-box to a vsm-dictionary (one or more) :
// - use online vocabulary data (via `vsm-dictionary-bioportal`, `vsm-dictionary-uniprot` etc.)
// - or here we make one that provides demo-data:
vsmbox.vsmDictionary = new VsmDictionaryLocal({
dictData: [ { id: 'http://dem.o/A',
name: 'Demo dictionary A',
entries: [ { id: 'http://dem.o/A/A:01', terms: [ { str: 'Jo' }, { str: 'Joanna' } ] }, // Two synonyms.
{ id: 'http://dem.o/A/A:02', terms: [ { str: 'eats' } ], descr: 'an eating activity' } ]
} ],
refTerms: ['it']
});
// 4) Optional: Fill the vsm-box with a VSM-template. Uncomment this to do so:
/*vsmbox.initialValue = {
terms: [ { placeholder: 'name' }, { str: 'eats', classID: 'http://dem.o/A/A:02', instID: null }, {} ],
conns: [ { type: 'T', pos: [ 0, 1, 2 ] } ]
};*/
// 5) Listen to vsm-box content updates. Here we show its data-content live in the textfield below it.
vsmbox.addEventListener('change', showData);
function showData(event) { textarea.value = JSON.stringify(event.detail[0], null, 2) }
showData({ detail: [vsmbox.initialValue || { terms: [], conns: [] }] }); // Show initial content.
</script>
</html>