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..ab2784a 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,34 +260,82 @@ body { } } -.content-section h2 { +.hidden { + position: absolute; + left: -1000px; + top: -1000px; + width: 0; + height: 0; + overflow: hidden; + display: inline; +} + +#scope-sidebar h1, summary.h1 { + color: var(--panet-purple); + font-family: "Inter", "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; + font-size: 2.5rem; + margin: 35px 0 20px 0; + font-weight: 600; +} + +#scope-sidebar 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 */ - margin-bottom: 25px; /* Reduced from 30px to 25px */ - border-bottom: 4px solid var(--panet-pink); - padding-bottom: 15px; /* Reduced from 20px to 15px */ + font-size: 2rem; + margin: 25px 0 15px 0; font-weight: 700; line-height: 1.1; 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 */ +#scope-sidebar h3, summary.h3 { + color: var(--panet-dark-blue); + font-size: 1.4rem; font-weight: 600; - border-left: 5px solid var(--panet-pink); - padding-left: 20px; + margin: 25px 0 15px 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 @@ +--- +--- + +
+ 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. + ++ Decide what kind of term you want to add: +
+ Create a meaningful title, e.g. "New term: X-ray Absorption Spectroscopy". +
+ ++ 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. +
+ ++ Use a self-explanatory, short description. Please avoid explaining a term with itself. +
+ ++ 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 +
+ 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 +
+
+ For Maintainers: Possible axiom types for relationships (object properties)
+
+
+
+
+
+
+ Please create a sub-issue to add the missing specifier or term, using the same template to make a "New term request". +
++ Example: +
+ Synonyms can be abbreviations. +
+ ++ 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. +
+ ++ 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. +
++ The ID for a new term depends on its type: technique, specifier, or relationship. +
+ +| 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 | ++ |
+ 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. +
+ +
+dcterms_prefix=${DCTERMS_PREFIX:-terms}
+robot \
+ template \
+ --template "PaNET.csv" \
+ --prefix "PaNET: http://purl.org/pan-science/PaNET/" \
+ reason --reasoner hermit \
+ --remove-redundant-subclass-axioms false \
+ --include-indirect false \
+ --exclude-tautologies all \
+ --axiom-generators "$generated_axioms" \
+ annotate \
+ --ontology-iri "http://purl.org/pan-science/PaNET/PaNET.owl" \
+ --add-prefix "sdo: http://schema.org/" \
+ --add-prefix "${dcterms_prefix}: http://purl.org/dc/terms/" \
+ --output "PaNET.owl" \
+ reason \
+ --reasoner hermit \
+ --remove-redundant-subclass-axioms false \
+ --include-indirect true \
+ --exclude-tautologies all \
+ --axiom-generators "$generated_axioms" \
+ --output "PaNET with inferred axioms.owl"
+
+
+robot diff --left "PaNET_reference.owl" --right "PaNET_new.owl" --output compare.txt
+
+