From 8bde14369090c8ef1b8b7b7d1bf368b5a40616e5 Mon Sep 17 00:00:00 2001
From: kara-mela
Date: Fri, 19 Jun 2026 11:21:16 +0200
Subject: [PATCH 1/2] Init Best Practice for New Terms
Motivation
The new structure of PaNET brings more possibilities, but also more
challenges for creating a new term.
To help researchers and PaNET members adding new terms, we should provide a
best practice document on our webpage.
Modification
An initial version of the Best Practice document has been added.
This also required to add some images and to update the css file as well as
to link it in the navigation bar.
Result
Better guidance.
---
docs/_data/navigation.yml | 3 +
docs/assets/css/custom.css | 92 +++++--
docs/assets/images/new_issue.svg | 47 ++++
docs/assets/images/new_term_request.svg | 47 ++++
docs/best_practice_new_term.html | 317 ++++++++++++++++++++++++
5 files changed, 489 insertions(+), 17 deletions(-)
create mode 100644 docs/assets/images/new_issue.svg
create mode 100644 docs/assets/images/new_term_request.svg
create mode 100644 docs/best_practice_new_term.html
diff --git a/docs/_data/navigation.yml b/docs/_data/navigation.yml
index 803edf1..b3e6669 100644
--- a/docs/_data/navigation.yml
+++ b/docs/_data/navigation.yml
@@ -30,6 +30,9 @@
- name: Code of Conduct
link: "/CODE_OF_CONDUCT.html"
description: Guidelines for ethical behaviour, respectful interactions, and community standards.
+ - name: Add a New Term
+ link: "/best_practice_new_term.html"
+ description: Guidelines for adding a new technique to PaNET.
- name: Technical References
link: "/build.html"
diff --git a/docs/assets/css/custom.css b/docs/assets/css/custom.css
index 01dfc01..eb62cfe 100644
--- a/docs/assets/css/custom.css
+++ b/docs/assets/css/custom.css
@@ -2,13 +2,14 @@
:root {
/* New PANET color palette */
- --panet-pink: rgb(186, 69, 118);
- --panet-purple: rgb(101, 109, 177);
- --panet-blue-cyan: rgb(129, 183, 228);
- --panet-dark-blue: rgb(16, 55, 100);
- --panet-black: rgb(17, 33, 62);
- --panet-light-grey: rgb(248, 249, 250);
+ --panet-pink: rgb(186, 69, 118);
+ --panet-purple: rgb(101, 109, 177);
+ --panet-blue-cyan: rgb(129, 183, 228);
+ --panet-dark-blue: rgb(16, 55, 100);
+ --panet-black: rgb(17, 33, 62);
+ --panet-light-grey: rgb(248, 249, 250);
--panet-border-grey: rgb(220, 224, 228);
+ --panet-light-blue: rgb(208, 226, 240);
}
/* Fixed Header Styles */
@@ -71,6 +72,11 @@ body {
box-shadow: 0 0 20px rgba(17, 33, 62, 0.1);
}
+mark {
+ color: var(--panet-dark-blue);
+ background-color: var(--panet-light-blue);
+}
+
#content {
display: flex;
width: 100%;
@@ -254,7 +260,27 @@ body {
}
}
-.content-section h2 {
+.hidden {
+ position: absolute;
+ left: -1000px;
+ top: -1000px;
+ width: 0;
+ height: 0;
+ overflow: hidden;
+ display: inline;
+}
+
+.content-section h1, summary.h1 {
+ color: var(--panet-purple);
+ font-family: "Inter", "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
+ font-size: 2rem; /* Reduced from 2.2rem to 2rem */
+ margin: 35px 0 20px 0; /* Reduced margins from 40px 0 25px 0 */
+ font-weight: 600;
+ border-left: 5px solid var(--panet-pink);
+ padding-left: 20px;
+}
+
+.content-section h2, summary.h2 {
color: var(--panet-dark-blue);
font-family: "Inter", "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
font-size: 2.8rem; /* Reduced from 3.2rem to 2.8rem */
@@ -266,22 +292,54 @@ body {
text-shadow: 0 1px 2px rgba(17, 33, 62, 0.1);
}
-.content-section h1 {
- color: var(--panet-purple);
- font-family: "Inter", "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
- font-size: 2rem; /* Reduced from 2.2rem to 2rem */
- margin: 35px 0 20px 0; /* Reduced margins from 40px 0 25px 0 */
+.content-section h3, summary.h3 {
+ color: var(--panet-dark-blue);
+ font-size: 1.4rem; /* Reduced from 1.6rem to 1.4rem */
font-weight: 600;
- border-left: 5px solid var(--panet-pink);
- padding-left: 20px;
+ margin: 25px 0 15px 0; /* Reduced margins from 30px 0 20px 0 */
+ font-family: "Inter", "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
}
-.content-section h3 {
+#scope-sidebar h4, summary.h4 {
color: var(--panet-dark-blue);
- font-size: 1.4rem; /* Reduced from 1.6rem to 1.4rem */
+ font-size: 1.4rem;
font-weight: 600;
- margin: 25px 0 15px 0; /* Reduced margins from 30px 0 20px 0 */
+ margin: 15px 0 5px 0;
+ font-family: "Inter", "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
+ font-style: italic;
+}
+
+#scope-sidebar h5, summary.h5 {
+ color: var(--panet-dark-blue);
+ font-size: 1.2rem;
+ font-weight: normal;
+ margin: 10px 0 5px 0;
font-family: "Inter", "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
+ font-style: italic;
+}
+
+.code-block {
+ background: var(--panet-light-grey);
+ color: var(--panet-black);
+ padding: 8px;
+ border-radius: 8px;
+ border: 2px solid var(--panet-border-grey);
+ overflow-x: auto;
+ font-family: 'Fira Code', monospace;
+ line-height: 1.5;
+}
+
+#ID_ranges {
+ padding-left: 24px;
+}
+
+#ID_ranges td, th {
+ padding: 4px 12px;
+}
+
+#ID_ranges td:nth-child(2),
+#ID_ranges td:nth-child(3) {
+ text-align: right;
}
.content-section p {
diff --git a/docs/assets/images/new_issue.svg b/docs/assets/images/new_issue.svg
new file mode 100644
index 0000000..ac40a07
--- /dev/null
+++ b/docs/assets/images/new_issue.svg
@@ -0,0 +1,47 @@
+
+
+
+
diff --git a/docs/assets/images/new_term_request.svg b/docs/assets/images/new_term_request.svg
new file mode 100644
index 0000000..20a32af
--- /dev/null
+++ b/docs/assets/images/new_term_request.svg
@@ -0,0 +1,47 @@
+
+
+
+
diff --git a/docs/best_practice_new_term.html b/docs/best_practice_new_term.html
new file mode 100644
index 0000000..3d02350
--- /dev/null
+++ b/docs/best_practice_new_term.html
@@ -0,0 +1,317 @@
+---
+---
+
+
Best Practice: New Terms
+
+
+ The text is mainly written for researchers to guide them in adding a new term to PaNET.
+
+
+Blue texts are additional information for the PaNET maintenance group and can be ignored.
+
+
+A new term can be a technique, a specifier, and/or a relationship.
+
+
+ Technical Steps to Request a New Term
+
Technical Steps to Request a New Term
+
+
+
+ Make sure that the term is note yet listed in PaNET, e.g. search this page.
+
+
+ Create a new issue by clicking the green "New issue" button on the "Issues" page.
+
+ Use the template "New term request".
+
+
+ Publish the Issue by clicking the green "Create" button at the bottom.
+
+
+ Wait for approval by the PaNET team, often after a discussion.
+
+
+ Create a pull request. This step should be taken by the requester, but can also be handled by any other participant of the discussion. This might depend on how familiar the requester is with handling the PaNET.csv. Follow the recommendations on Pull Request for New Terms.
+
+
+
+
+
+ Required Information
+
Required Information
+
+
+ Decide what kind of term you want to add:
+
+
+ technique (class), defined by a probe and a process (e.g. x-ray diffraction)
+
+
+ specifier (class), a descriptor of a technique (e.g. diffraction, obtain spatial map, versus time, neutron). Currently, all specifier classes have a corresponding technique class, e.g. "diffraction" (PaNET01022) and "diffraction" (PaNET2020018); this might change soon. The former refers to the group of techniques that can be described by the process of diffraction, while the latter represents the process of diffraction itself. The technique class is linked to it specifier class via the object property, e.g. "definedbyprocess".
+
+
+ relationship (object property), describes the relation of two objects, e.g. defined by purpose. These terms should be well covered by PaNET, we do not expect frequent updates here.
+
+
+
+
+
Title
+
+
+ Create a meaningful title, e.g. "New term: X-ray Absorption Spectroscopy".
+
+
+
New term label
+
+
+ Assign a fitting name to the term. If multiple options are suitable, choose a full-text representation, you can designate abbreviations and additional names as synonyms later on.
+
+
+
Definition
+
+
+ Use a self-explanatory, short description. Please avoid explaining a term with itself.
+
+
+
Position in the ontology
+
+
+ The position in the ontology is described by the type of the relationship (axiom type) and a related term that already exists in the ontology.
+
+
+
+ Possible axiom types for techniques and specifiers
+
+
+ is equivalent to,
+
+
+ Term1 equals the logical conjunction of Term2 and Term3, Term1 = Term2 AND Term3, e.g. "x-ray spectroscopy" is equivalent to "x-ray probe" and "spectroscopy", because we can be sure that any technique that has "x-ray probe" and "spectroscopy" as superclasses cannot be disjoint from "x-ray spectroscopy".
+
+
+
+ For Maintainers: Technique1 = (ObjectProperty1 some Specifier1), e.g. "x-ray probe" (technique) is equivalent to "definedbyprobe" (object property) some "x-ray" (specifier).
+
+
+
+
+
+ is subclass of, e.g. "x-ray tomography" is subclass of "imaging" and "x-ray probe", but there are also other subclasses of "imaging" and "x-ray probe" like "x-ray microscopy".
+
+
+ is superclass of, inverse relation to "is subclass of".
+
+
+ disjoint with, Term1 and Term2 have no common elements, e.g. "elastic scattering" and "inelastic scattering".
+
+
+
+
+ Check if more general (parent class) or more specific (child class) techniques already exist, e.g. "diffraction" is a more general term for "powder diffraction". Add those with the strongest relations as super- and subclasses. Please give their PaNET IDs.
+
+
+
+ Check if the use specifiers is beneficial, e.g. "scanning probe" as an additional descriptor to "transmission x-ray microscopy". These terms are usually (direct) subclasses of
+
+
defined by experimental probe (PaNET00002)
+
defined by experimental physical process (PaNET00003)
+
defined by functional dependence (PaNET00004)
+
defined by purpose (PaNET00005)
+
+ Please give their PaNET IDs.
+
+
+
+
+ For Maintainers: Possible axiom types for relationships (object properties)
+
+
+ super property, e.g. "photon and neutron technique relationships" is a super property of "definedbyprocess".
+
+
+ domain/range. Used to indicate that the object property maps from a domain to a range, e.g. "definedbyprocess" maps from "photon and neutron technique" to "process"
+
+
+ characteristic
+
+
+ one or several of the following list: functional, inverse functional, transitive, symmetric, asymmetric, reflexive, irreflexive
+
+
+ e.g. "definedbyprocess" is asymmetric
+
+
+ More detailed information here.
+
+
+
+
+
+
+
+
What if a required specifier or superclass does not exist?
+
+
+ Please create a sub-issue to add the missing specifier or term, using the same template to make a "New term request".
+
+
+ Example:
+
+
+ New term is "x-ray absorption spectroscopy in transmission mode" and "x-ray absorption spectroscopy" exists in PaNET, but "transmission mode" (or something equivalent) does not.
+
+
+ Add "transmission mode (to be done)" iIn the hierarchy section.
+
+
+ After publishing this issue, you find a box in your post "Create sub-issue", use it to create a new term request on "transmission mode".
+
+
+
+
+
Synonyms
+
+
+ Synonyms can be abbreviations.
+
+
+
Cross-References
+
+
+ Add a cross-reference to a reliable (as persistent as possible) source, e.g. link to Wikidata.
+
+
+ Add DOIs of 1 or 2 peer-reviewed journal articles using the technique.
+
+
+
Motviation
+
+
+ Add a brief motivation on why this technique should be added, e.g. technique used at your facility, with a link to a website that proves this.
+
+
+
+
+ Pull Request for New Term
+
Pull Request for New Term
+
+
How to choose the ID for the New Term?
+
+
+ The ID for a new term depends on its type: technique, specifier, or relationship.
+
+
+
Generally intended ID ranges
+
+
+
Type
+
Min. ID
+
Max. ID
+
+
+
Techniques
+
0
+
999999
+
+
+
"defined by ..." terms
+
2
+
99
+
+
+
"defined by experimental probe" terms
+
100
+
199
+
+
+
"defined by experimental physical process" termss
+
200
+
299
+
+
+
"defined by functional dependence" terms
+
300
+
399
+
+
+
"defined by purpose" terms
+
400
+
499
+
+
+
Other, more specific terms
+
1000
+
999999
+
+
+
Relationships
+
1000000
+
1999999
+
+
+
Specifier
+
2000000
+
+
+
+
+
New "defined by ..." term
+
+ When a new "defined by..." term is created, it will receive an ID i in the range 2 to 99. Its subclasses will cover the ID range (i-1)*100 to i*100-1.
+
+
+ Example: "defined by functional dependence" (PaNET00004) with subclasses in PaNET00300 to PaNET00399.
+
+
+
Check consistency of the ontology
+
+
+ For Maintainers: Please check the changes in axioms caused by adding the new term and the relationships. This will guarantee that no unexpected subclass relationships have been added or correct subclass relationships have been removed.
+
+
+ Download the latest PaNET.csv file from the GitHub Repository, and the modified CSV file that you want to add to the pull request. The former acts as the "reference" file with which the latter will be compared.
+
+
+ Use the ROBOT template command to build an OWL file for each of the two CSV files. Here is a template for the code:
+
+ Use the ROBOT diff command to compare the two OWL files. This will produce an output text file that lists the differences between the two OWL files. Here is a template for the code:
+