├── src ├── ontology │ ├── bfo_terms.txt │ ├── iao_terms.txt │ ├── imports │ │ ├── iao_terms.txt │ │ └── bfo_terms.txt │ ├── run.bat │ ├── config │ │ ├── community_upper_terms.txt │ │ └── context.json │ ├── t4fs-odk.yaml │ ├── t4fs.Makefile │ ├── catalog-v001.xml │ ├── DEPRECATION.md │ ├── t4fs-idranges.owl │ ├── bfo_import.owl │ ├── t4fs-edit.owl │ ├── run.sh │ ├── README-editors.md │ ├── annotations.owl │ └── Makefile ├── scripts │ ├── run-command.sh │ ├── classIRIs-list.sparql │ ├── editor-count.sparql │ ├── fix_annotations.rq │ ├── missing-definitions.sparql │ ├── t4fsIRIs-list.sparql │ ├── labels_tolowercase.rq │ ├── own-labels.sparql │ ├── extract_defsource.rq │ ├── add_en.rq │ ├── count-by-section.sparql │ ├── make-lowercase.ru │ ├── mapping.pl │ ├── add_en_defsource.rq │ ├── update_repo.sh │ └── validate_id_ranges.sc ├── sparql │ ├── t4fs_terms.sparql │ ├── xrefs.sparql │ ├── label-with-iri-violation.sparql │ ├── labels.sparql │ ├── terms.sparql │ ├── class-count-by-prefix.sparql │ ├── multiple-replaced_by-violation.sparql │ ├── simple-seed.sparql │ ├── basic-report.sparql │ ├── subsets-labeled.sparql │ ├── edges.sparql │ ├── postprocess-module.ru │ ├── dc-properties-violation.sparql │ ├── obsoletes.sparql │ ├── owldef-self-reference-violation.sparql │ ├── inject-subset-declaration.ru │ ├── preprocess-module.ru │ ├── inject-synonymtype-declaration.ru │ ├── iri-range-violation.sparql │ ├── synonyms.sparql │ └── README.md ├── prefixes.json ├── metadata │ ├── t4fs.yml │ ├── README.md │ └── t4fs.md └── templates │ ├── README.md │ ├── properties.tsv │ └── index.tsv ├── initial_prototyping ├── v1 │ ├── .gitignore │ ├── README.md │ └── Makefile ├── fso_casrai.tsv ├── v3-Jan2021 │ └── README.md └── v2-Dec2020 │ └── README.md ├── t4fs-ontology-model.png ├── issue_template.md ├── LICENSE.md ├── .gitignore ├── .github └── workflows │ └── qc.yml ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── README.md └── diff-with-previous-release.md /src/ontology/bfo_terms.txt: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/ontology/iao_terms.txt: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /initial_prototyping/v1/.gitignore: -------------------------------------------------------------------------------- 1 | build/ 2 | **/catalog-v001.xml 3 | **/.±lock.* 4 | -------------------------------------------------------------------------------- /t4fs-ontology-model.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/terms4fairskills/FAIRterminology/HEAD/t4fs-ontology-model.png -------------------------------------------------------------------------------- /initial_prototyping/fso_casrai.tsv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/terms4fairskills/FAIRterminology/HEAD/initial_prototyping/fso_casrai.tsv -------------------------------------------------------------------------------- /src/ontology/imports/iao_terms.txt: -------------------------------------------------------------------------------- 1 | http://purl.obolibrary.org/obo/IAO_0000030 2 | http://purl.obolibrary.org/obo/IAO_0000233 # term tracker item 3 | -------------------------------------------------------------------------------- /src/ontology/run.bat: -------------------------------------------------------------------------------- 1 | docker run -v %cd%\..\..\:/work -w /work/src/ontology -e 'ROBOT_JAVA_ARGS=-Xmx8G' -e 'JAVA_OPTS=-Xmx8G' --rm -ti obolibrary/odkfull %* -------------------------------------------------------------------------------- /src/ontology/config/community_upper_terms.txt: -------------------------------------------------------------------------------- 1 | obo:T4FS_0000012 2 | obo:T4FS_0000446 3 | obo:T4FS_0000548 4 | obo:T4FS_0000372 5 | obo:T4FS_0000519 6 | obo:T4FS_0000580 7 | BFO:0000023 8 | -------------------------------------------------------------------------------- /initial_prototyping/v1/README.md: -------------------------------------------------------------------------------- 1 | This directory contains a frozen version of the terminology, created via ROBOT from a collaborative spreadsheet of terms generated through two workshops of the terms4FAIRskills community. 2 | -------------------------------------------------------------------------------- /src/scripts/run-command.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | ODK_DEBUG_FILE=${ODK_DEBUG_FILE:-debug.log} 3 | echo "Command: sh $@" >> $ODK_DEBUG_FILE 4 | /usr/bin/time -a -o $ODK_DEBUG_FILE -f "Elapsed time: %E\nPeak memory: %M kb" /bin/sh "$@" 5 | -------------------------------------------------------------------------------- /src/sparql/t4fs_terms.sparql: -------------------------------------------------------------------------------- 1 | SELECT DISTINCT ?term 2 | WHERE { 3 | { ?s1 ?p1 ?term . } 4 | UNION 5 | { ?term ?p2 ?o2 . } 6 | FILTER(isIRI(?term) && (STRSTARTS(str(?term), "http://purl.obolibrary.org/obo/T4FS_"))) 7 | } 8 | -------------------------------------------------------------------------------- /src/sparql/xrefs.sparql: -------------------------------------------------------------------------------- 1 | prefix oio: 2 | prefix owl: 3 | 4 | SELECT ?cls ?xref WHERE 5 | { 6 | ?cls a owl:Class ; 7 | oio:hasDbXref ?xref 8 | } 9 | -------------------------------------------------------------------------------- /src/scripts/classIRIs-list.sparql: -------------------------------------------------------------------------------- 1 | # List all classes. 2 | # Created by: Allyson Lister 3 | 4 | prefix owl: 5 | prefix rdf: 6 | 7 | SELECT DISTINCT ?class 8 | WHERE { 9 | ?class rdf:type owl:Class 10 | } 11 | -------------------------------------------------------------------------------- /src/sparql/label-with-iri-violation.sparql: -------------------------------------------------------------------------------- 1 | PREFIX rdfs: 2 | 3 | SELECT ?term ?value 4 | WHERE { 5 | ?term rdfs:label ?value . 6 | FILTER (REGEX(?value, "http[s]?[:]")) 7 | FILTER(isIRI(?term) && (STRSTARTS(str(?term), "http://purl.obolibrary.org/obo/T4FS_"))) 8 | } 9 | 10 | -------------------------------------------------------------------------------- /src/sparql/labels.sparql: -------------------------------------------------------------------------------- 1 | PREFIX owl: 2 | PREFIX rdf: 3 | PREFIX rdfs: 4 | 5 | SELECT ?x (STR(?lab) AS ?label) WHERE { 6 | ?x rdf:type owl:Class . 7 | OPTIONAL {?x rdfs:label ?lab} 8 | } 9 | ORDER BY ?x 10 | -------------------------------------------------------------------------------- /src/scripts/editor-count.sparql: -------------------------------------------------------------------------------- 1 | prefix owl: 2 | prefix obo: 3 | 4 | SELECT ?editor (count(?editor) as ?editor_count) 5 | WHERE 6 | { 7 | ?class a owl:Class . 8 | ?class obo:IAO_0000117 ?editor. 9 | } 10 | GROUP BY ?editor 11 | ORDER BY DESC(?editor_count) 12 | -------------------------------------------------------------------------------- /src/sparql/terms.sparql: -------------------------------------------------------------------------------- 1 | PREFIX rdf: 2 | prefix owl: 3 | SELECT DISTINCT ?term 4 | WHERE { 5 | { 6 | ?s1 ?p1 ?term . 7 | FILTER(?p1!=rdf:type) 8 | } 9 | UNION 10 | { 11 | ?term ?p2 ?o2 . 12 | FILTER(?o2!=owl:Ontology) 13 | } 14 | FILTER(isIRI(?term)) 15 | } -------------------------------------------------------------------------------- /src/sparql/class-count-by-prefix.sparql: -------------------------------------------------------------------------------- 1 | prefix owl: 2 | prefix obo: 3 | 4 | SELECT ?prefix (COUNT(DISTINCT ?cls) AS ?numberOfClasses) WHERE 5 | { 6 | ?cls a owl:Class . 7 | FILTER (!isBlank(?cls)) 8 | BIND( STRBEFORE(STRAFTER(str(?cls),"http://purl.obolibrary.org/obo/"), "_") AS ?prefix) 9 | } 10 | GROUP BY ?prefix -------------------------------------------------------------------------------- /src/sparql/multiple-replaced_by-violation.sparql: -------------------------------------------------------------------------------- 1 | PREFIX replaced_by: 2 | 3 | SELECT DISTINCT ?entity ?property ?value WHERE { 4 | VALUES ?property { 5 | replaced_by: 6 | } 7 | ?entity ?property ?value1 . 8 | ?entity ?property ?value2 . 9 | FILTER(?value1!=?value2) 10 | BIND(CONCAT(str(?value1), CONCAT("|", str(?value2))) as ?value) 11 | } 12 | 13 | -------------------------------------------------------------------------------- /src/sparql/simple-seed.sparql: -------------------------------------------------------------------------------- 1 | prefix owl: 2 | 3 | SELECT DISTINCT ?cls WHERE 4 | { 5 | {?cls a owl:AnnotationProperty .} 6 | UNION 7 | {?cls a owl:ObjectProperty .} 8 | UNION 9 | {?x ?cls} 10 | UNION 11 | {?x ?cls} 12 | FILTER (!isBlank(?cls)) 13 | } 14 | -------------------------------------------------------------------------------- /src/scripts/fix_annotations.rq: -------------------------------------------------------------------------------- 1 | PREFIX owl: 2 | 3 | DELETE { ?s ?p ?o } 4 | WHERE { ?s ?p ?o . 5 | ?p a owl:AnnotationProperty . 6 | FILTER (LANG(?o) != "") 7 | FILTER (LANG(?o) != "en") 8 | } ; 9 | 10 | DELETE { ?s ?p ?o } 11 | WHERE { ?s ?p ?o . 12 | ?s ?p ?o2 . 13 | ?p a owl:AnnotationProperty . 14 | FILTER (LANG(?o) != "") 15 | FILTER (LANG(?o2) != "en") 16 | } ; 17 | -------------------------------------------------------------------------------- /src/sparql/basic-report.sparql: -------------------------------------------------------------------------------- 1 | prefix oio: 2 | prefix def: 3 | prefix owl: 4 | 5 | SELECT ?cls ?def (group_concat(?xref) as ?xrefs) WHERE 6 | { 7 | ?cls a owl:Class . 8 | OPTIONAL { ?cls oio:hasDbXref ?xref } . 9 | OPTIONAL { ?cls def: ?def } . 10 | FILTER (!isBlank(?cls)) 11 | } 12 | GROUP BY ?cls ?def 13 | -------------------------------------------------------------------------------- /src/sparql/subsets-labeled.sparql: -------------------------------------------------------------------------------- 1 | prefix oio: 2 | prefix owl: 3 | prefix inSubset: 4 | prefix rdfs: 5 | 6 | SELECT ?subset ?clsLabel 7 | WHERE 8 | { 9 | ?cls a owl:Class ; 10 | inSubset: ?subset ; 11 | rdfs:label ?clsLabel 12 | } 13 | ORDER BY ?subset ?cls 14 | -------------------------------------------------------------------------------- /src/ontology/imports/bfo_terms.txt: -------------------------------------------------------------------------------- 1 | http://purl.obolibrary.org/obo/BFO_0000001 2 | http://purl.obolibrary.org/obo/BFO_0000002 3 | http://purl.obolibrary.org/obo/BFO_0000003 4 | http://purl.obolibrary.org/obo/BFO_0000004 5 | http://purl.obolibrary.org/obo/BFO_0000015 # process 6 | http://purl.obolibrary.org/obo/BFO_0000017 7 | http://purl.obolibrary.org/obo/BFO_0000020 8 | http://purl.obolibrary.org/obo/BFO_0000023 # role 9 | http://purl.obolibrary.org/obo/BFO_0000031 10 | -------------------------------------------------------------------------------- /src/scripts/missing-definitions.sparql: -------------------------------------------------------------------------------- 1 | prefix owl: 2 | prefix obo: 3 | prefix rdf: 4 | prefix rdfs: 5 | 6 | SELECT ?name ?definition 7 | WHERE 8 | { 9 | ?class rdf:type owl:Class . 10 | ?class rdfs:label ?name . 11 | ?class obo:IAO_0000115 ?definition . 12 | FILTER (CONTAINS(?definition,"??")) . 13 | } 14 | -------------------------------------------------------------------------------- /src/sparql/edges.sparql: -------------------------------------------------------------------------------- 1 | prefix owl: 2 | prefix rdfs: 3 | prefix rdf: 4 | 5 | SELECT ?x ?p ?y 6 | WHERE { 7 | {?x rdfs:subClassOf [ 8 | a owl:Restriction ; 9 | owl:onProperty ?p ; 10 | owl:someValuesFrom ?y ] 11 | } 12 | UNION { 13 | ?x rdfs:subClassOf ?y . 14 | BIND(rdfs:subClassOf AS ?p) 15 | } 16 | ?x a owl:Class . 17 | ?y a owl:Class . 18 | } 19 | -------------------------------------------------------------------------------- /src/scripts/t4fsIRIs-list.sparql: -------------------------------------------------------------------------------- 1 | prefix owl: 2 | prefix rdf: 3 | 4 | SELECT DISTINCT ?iri { 5 | values ?objectType { owl:Class owl:DatatypeProperty owl:ObjectProperty owl:AnnotationProperty } 6 | ?iri a ?objectType 7 | FILTER (!regex(str(?iri),"geneontology")). 8 | FILTER (!regex(str(?iri),"obolibrary")). 9 | FILTER (!regex(str(?iri),"purl.org")). 10 | FILTER (!regex(str(?iri),"w3.org")). 11 | } 12 | -------------------------------------------------------------------------------- /src/scripts/labels_tolowercase.rq: -------------------------------------------------------------------------------- 1 | # convert our terminology labels to lowercase to match OBO Foundry conventions, 2 | # and also will ensure all labels have the @en language. 3 | 4 | prefix rdfs: 5 | 6 | DELETE { 7 | ?class rdfs:label ?display_name 8 | } 9 | INSERT { 10 | ?class rdfs:label ?lower_display_name 11 | } 12 | WHERE { 13 | ?class rdfs:label ?display_name; 14 | BIND(IF(LANG(?display_name) = "", STRLANG(LCASE(?display_name), "en"), LCASE(?display_name)) AS ?lower_display_name) 15 | } 16 | -------------------------------------------------------------------------------- /src/ontology/config/context.json: -------------------------------------------------------------------------------- 1 | { 2 | "@context": { 3 | "obo": "http://purl.obolibrary.org/obo/", 4 | "oboInOwl": "http://www.geneontology.org/formats/oboInOwl#", 5 | 6 | "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", 7 | "rdfs": "http://www.w3.org/2000/01/rdf-schema#", 8 | "xml": "http://www.w3.org/XML/1998/namespace", 9 | "xsd": "http://www.w3.org/2001/XMLSchema#", 10 | "owl": "http://www.w3.org/2002/07/owl#", 11 | 12 | "dcterms": "http://purl.org/dc/terms/", 13 | "dce": "http://purl.org/dc/elements/1.1/" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/sparql/postprocess-module.ru: -------------------------------------------------------------------------------- 1 | PREFIX rdf: 2 | PREFIX rdfs: 3 | PREFIX dc: 4 | PREFIX owl: 5 | 6 | 7 | DELETE { 8 | ?ontology ?ontology_annotation_property ?ontology_annotation_value . 9 | } 10 | 11 | WHERE { 12 | ?ontology rdf:type owl:Ontology . 13 | ?ontology ?ontology_annotation_property ?ontology_annotation_value . 14 | FILTER(?ontology_annotation_property != dc:source && ?ontology_annotation_property != rdf:type) 15 | 16 | } -------------------------------------------------------------------------------- /src/sparql/dc-properties-violation.sparql: -------------------------------------------------------------------------------- 1 | # The purpose of this violation is to make sure people update 2 | # from using the deprecated DC Elements 1.1 namespace (http://purl.org/dc/elements/1.1/) 3 | # to using the recommended DC Terms namespace (http://purl.org/dc/terms/) 4 | # See also discussion on https://github.com/oborel/obo-relations/pull/692 5 | 6 | SELECT ?term ?predicate WHERE { 7 | ?term ?predicate ?value . 8 | FILTER(STRSTARTS(STR(?predicate), "http://purl.org/dc/elements/1.1/")) 9 | FILTER(isIRI(?term) && (STRSTARTS(str(?term), "http://purl.obolibrary.org/obo/T4FS_"))) 10 | } 11 | 12 | -------------------------------------------------------------------------------- /src/sparql/obsoletes.sparql: -------------------------------------------------------------------------------- 1 | prefix xsd: 2 | PREFIX owl: 3 | PREFIX rdf: 4 | PREFIX rdfs: 5 | PREFIX replaced_by: 6 | PREFIX consider: 7 | 8 | SELECT ?cls ?replCls ?consCls WHERE { 9 | ?cls a owl:Class ; 10 | owl:deprecated "true"^^xsd:boolean . 11 | OPTIONAL {?cls replaced_by: ?replCls} 12 | OPTIONAL {?cls consider: ?consCls} 13 | } 14 | ORDER BY ?cls 15 | -------------------------------------------------------------------------------- /src/sparql/owldef-self-reference-violation.sparql: -------------------------------------------------------------------------------- 1 | PREFIX rdf: 2 | PREFIX oio: 3 | PREFIX owl: 4 | PREFIX rdfs: 5 | 6 | SELECT ?term WHERE { 7 | { ?term owl:equivalentClass [ owl:intersectionOf [ rdf:rest*/rdf:first ?term ] ] } 8 | UNION 9 | { ?term owl:equivalentClass [ owl:intersectionOf [ rdf:rest*/rdf:first [ owl:someValuesFrom ?term ] ] ] } 10 | FILTER(isIRI(?term) && (STRSTARTS(str(?term), "http://purl.obolibrary.org/obo/T4FS_"))) 11 | } 12 | 13 | -------------------------------------------------------------------------------- /src/sparql/inject-subset-declaration.ru: -------------------------------------------------------------------------------- 1 | PREFIX : 2 | PREFIX rdf: 3 | PREFIX rdfs: 4 | 5 | INSERT { ?y rdfs:subPropertyOf . } 6 | 7 | WHERE { 8 | ?x ?y . 9 | FILTER(isIRI(?y)) 10 | FILTER(regex(str(?y),"^(http://purl.obolibrary.org/obo/)") || regex(str(?y),"^(http://www.ebi.ac.uk/efo/)") || regex(str(?y),"^(https://w3id.org/biolink/)") || regex(str(?y),"^(http://purl.obolibrary.org/obo)")) 11 | } -------------------------------------------------------------------------------- /src/sparql/preprocess-module.ru: -------------------------------------------------------------------------------- 1 | PREFIX rdf: 2 | PREFIX rdfs: 3 | PREFIX dc: 4 | PREFIX owl: 5 | 6 | 7 | #DELETE { 8 | # ?ontology ?ontology_annotation_property ?ontology_annotation_value . 9 | #} 10 | 11 | INSERT { 12 | ?ontology dc:source ?version_iri . 13 | } 14 | 15 | WHERE { 16 | ?ontology rdf:type owl:Ontology ; 17 | owl:versionIRI ?version_iri . 18 | #OPTIONAL { 19 | # ?ontology ?ontology_annotation_property ?ontology_annotation_value . 20 | #} 21 | 22 | } -------------------------------------------------------------------------------- /src/sparql/inject-synonymtype-declaration.ru: -------------------------------------------------------------------------------- 1 | PREFIX : 2 | PREFIX rdf: 3 | PREFIX rdfs: 4 | 5 | INSERT { ?y rdfs:subPropertyOf . } 6 | 7 | WHERE { 8 | ?x ?y . 9 | FILTER(isIRI(?y)) 10 | FILTER(regex(str(?y),"^(http://purl.obolibrary.org/obo/)") || regex(str(?y),"^(http://www.ebi.ac.uk/efo/)") || regex(str(?y),"^(https://w3id.org/biolink/)") || regex(str(?y),"^(http://purl.obolibrary.org/obo)")) 11 | } -------------------------------------------------------------------------------- /src/scripts/own-labels.sparql: -------------------------------------------------------------------------------- 1 | prefix owl: 2 | prefix rdfs: 3 | prefix obo: 4 | prefix rdf: 5 | prefix oboInOwl: 6 | 7 | SELECT ?class (GROUP_CONCAT(DISTINCT ?label; separator="|") as ?labels) 8 | WHERE { 9 | 10 | { ?class a owl:Class . OPTIONAL { ?class rdfs:label ?label } FILTER (regex( str(?label), '^[A-Z]'))} 11 | MINUS { 12 | ?class rdfs:comment ?comment 13 | FILTER (regex( str(?comment), "CASRAI")) 14 | } 15 | } 16 | GROUP BY (?class) 17 | -------------------------------------------------------------------------------- /issue_template.md: -------------------------------------------------------------------------------- 1 | For new term requests, please provide the following information: 2 | 3 | ## Preferred term label 4 | 5 | (e.g., Asplenia) 6 | 7 | ## Synonyms 8 | 9 | (e.g., Absent spleen) 10 | 11 | ## Textual definition 12 | 13 | the definition should be understandable even for non-specialists. Include a PubMed ID or URL to refer to any relevant article that provides additional information about the suggested term. 14 | 15 | ## Suggested parent term 16 | 17 | Please look in the hierarchy in a browser such as [OLS](http://www.ebi.ac.uk/ols/ontologies/t4fs) 18 | 19 | ## Attribution 20 | 21 | If you would like a nanoattribution, please indicate your ORCID id 22 | -------------------------------------------------------------------------------- /src/prefixes.json: -------------------------------------------------------------------------------- 1 | { 2 | "@context": { 3 | "BFO": "http://purl.obolibrary.org/obo/BFO_", 4 | "T4FS": "http://purl.obolibrary.org/obo/T4FS_", 5 | "dcterms": "http://purl.org/dc/terms/", 6 | "dc11": "http://purl.org/dc/elements/1.1/", 7 | "IAO": "http://purl.obolibrary.org/obo/IAO_", 8 | "OBI": "http://purl.obolibrary.org/obo/OBI_", 9 | "obo": "http://purl.obolibrary.org/obo/", 10 | "oboInOwl": "http://www.geneontology.org/formats/oboInOwl#", 11 | "owl": "http://www.w3.org/2002/07/owl#", 12 | "rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#", 13 | "rdfs": "http://www.w3.org/2000/01/rdf-schema#", 14 | "xsd" : "http://www.w3.org/2001/XMLSchema#" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/scripts/extract_defsource.rq: -------------------------------------------------------------------------------- 1 | # Select all definition sources (which are annotations on our definitions) 2 | # and print them out. 3 | 4 | PREFIX owl: 5 | PREFIX rdfs: 6 | PREFIX obo: 7 | 8 | 9 | SELECT ?subject ?label ?annValue ?subValue 10 | WHERE { 11 | ?subject rdfs:label ?label . 12 | OPTIONAL { 13 | obo:IAO_0000115 a owl:AnnotationProperty . 14 | ?subject obo:IAO_0000115 ?annValue . 15 | ?annotation owl:annotatedSource ?subject ; 16 | owl:annotatedProperty obo:IAO_0000115 ; 17 | owl:annotatedTarget ?annValue ; 18 | obo:IAO_0000119 ?subValue . 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/sparql/iri-range-violation.sparql: -------------------------------------------------------------------------------- 1 | PREFIX never_in_taxon: 2 | PREFIX present_in_taxon: 3 | PREFIX oboInOwl: 4 | PREFIX dcterms: 5 | PREFIX foaf: 6 | 7 | SELECT ?term ?property ?value 8 | WHERE { 9 | VALUES ?property { 10 | never_in_taxon: 11 | present_in_taxon: 12 | foaf:depicted_by 13 | oboInOwl:inSubset 14 | dcterms:contributor } 15 | ?term ?property ?value . 16 | FILTER(isIRI(?term) && (STRSTARTS(str(?term), "http://purl.obolibrary.org/obo/T4FS_"))) 17 | FILTER (!isIRI(?value)) 18 | } 19 | 20 | -------------------------------------------------------------------------------- /src/ontology/t4fs-odk.yaml: -------------------------------------------------------------------------------- 1 | id: t4fs 2 | title: "terms4FAIRskills (T4FS)" 3 | github_org: terms4FAIRskills 4 | repo: FAIRterminology 5 | use_templates: TRUE 6 | report_fail_on: ERROR 7 | edit_format: owl 8 | export_formats: 9 | - owl 10 | - obo 11 | - json 12 | release_artefacts: 13 | - base 14 | - simple 15 | - full 16 | - custom-t4fs-community 17 | primary_release: full 18 | import_group: 19 | products: 20 | - id: bfo 21 | - id: iao 22 | robot_java_args: '-Xmx8G' 23 | license: CC-BY 4.0 24 | components: 25 | products: 26 | - filename: t4fs-template.owl 27 | use_template: TRUE 28 | template_options: --add-prefixes config/context.json 29 | templates: 30 | - index.tsv 31 | - properties.tsv 32 | - t4fs.tsv 33 | -------------------------------------------------------------------------------- /src/sparql/synonyms.sparql: -------------------------------------------------------------------------------- 1 | prefix owl: 2 | prefix oboInOwl: 3 | prefix rdfs: 4 | 5 | SELECT ?cls ?pred ?val ?synType 6 | WHERE 7 | { ?cls ?pred ?val ; 8 | a owl:Class . 9 | FILTER ( 10 | ?pred = rdfs:label || 11 | ?pred = oboInOwl:hasRelatedSynonym || 12 | ?pred = oboInOwl:hasNarrowSynonym || 13 | ?pred = oboInOwl:hasBroadSynonym || 14 | ?pred = oboInOwl:hasExactSynonym 15 | ) 16 | 17 | OPTIONAL { 18 | [ 19 | a owl:Axiom ; 20 | owl:annotatedSource ?cls ; 21 | owl:annotatedProperty ?pred ; 22 | owl:annotatedTarget ?val ; 23 | oboInOwl:hasSynonymType ?synType 24 | ] 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | terms4FAIRskills is provided under a Creative Commons Attribution 4.0 International (CC BY 4.0) licence (https://creativecommons.org/licenses/by/4.0/). 2 | 3 | terms4FAIRskills is licensed under CC BY 4.0. You are free to share (copy and redistribute the material in any medium or format) and adapt (remix, transform, and build upon the material) for any purpose, even commercially. for any purpose, even commercially. The licensor cannot revoke these freedoms as long as you follow the license terms. You must give appropriate credit (by using the original ontology IRI for the whole ontology and original term IRIs for individual terms), provide a link to the license, and indicate if any changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use. 4 | -------------------------------------------------------------------------------- /src/scripts/add_en.rq: -------------------------------------------------------------------------------- 1 | # give all annotation properties the @en language. 2 | 3 | PREFIX owl: 4 | PREFIX iao: 5 | PREFIX rdfs: 6 | PREFIX t4fs: 7 | PREFIX go: 8 | 9 | DELETE { 10 | ?s ?property ?annValue 11 | } 12 | INSERT { 13 | ?s ?property ?annValue_en 14 | } 15 | WHERE { 16 | ?s ?property ?annValue . 17 | #?s rdfs:comment ?annValue . 18 | FILTER ( ?property IN (rdfs:comment, iao:0000117, iao:0000118, t4fs:0000564, t4fs:0000565, go:created_by) ) 19 | #{?property a owl:AnnotationProperty} UNION {?property a rdfs:comment} 20 | BIND(IF(LANG(?annValue) = "", STRLANG(?annValue, "en"), ?annValue) AS ?annValue_en) 21 | } 22 | -------------------------------------------------------------------------------- /src/ontology/t4fs.Makefile: -------------------------------------------------------------------------------- 1 | ## Customize Makefile settings for t4fs 2 | ## 3 | ## If you need to customize your Makefile, make 4 | ## changes here rather than in the main Makefile 5 | 6 | VIEW1=community 7 | CONFIG=config 8 | 9 | # Community: The community artefacts with imports merged, reasoned, and then 10 | # with the ULO terms removed so they can have a view with just the terms they expect. 11 | $(ONT)-$(VIEW1).owl: $(SRC) $(OTHER_SRC) $(IMPORT_FILES) 12 | $(ROBOT) merge --input $< \ 13 | reason --reasoner ELK --equivalent-classes-allowed asserted-only --exclude-tautologies structural \ 14 | relax \ 15 | reduce -r ELK \ 16 | extract --method MIREOT --branch-from-terms $(CONFIG)/$(VIEW1)_upper_terms.txt \ 17 | $(SHARED_ROBOT_COMMANDS) annotate --ontology-iri $(ONTBASE)/$@ $(ANNOTATE_ONTOLOGY_VERSION) --output $@.tmp.owl && mv $@.tmp.owl $@ 18 | -------------------------------------------------------------------------------- /src/scripts/count-by-section.sparql: -------------------------------------------------------------------------------- 1 | # Count classes by hierarchy section. In progress. 2 | # Created by: Allyson Lister 3 | 4 | prefix t4fs: 5 | prefix owl: 6 | prefix obo: 7 | prefix rdf: 8 | prefix rdfs: 9 | 10 | SELECT ?uri ?label ?sublabel ?definition { 11 | ?uri rdfs:label ?label . 12 | ?class rdf:type owl:Class . 13 | ?class rdfs:subClassOf* ?uri . 14 | ?class rdfs:label ?sublabel . 15 | ?class obo:IAO_0000115 ?definition 16 | FILTER (CONTAINS(?definition,"??")) . 17 | FILTER (?uri IN (t4fs:T4FS_0000012, t4fs:T4FS_0000446, t4fs:T4FS_0000446, t4fs:T4FS_0000548, t4fs:T4FS_0000372, t4fs:T4FS_0000519, t4fs:T4FS_0000513)) 18 | } 19 | -------------------------------------------------------------------------------- /src/ontology/catalog-v001.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /initial_prototyping/v3-Jan2021/README.md: -------------------------------------------------------------------------------- 1 | # terms4FAIRskills 2 | 3 | ## fso draft January 2021 4 | 5 | *FSO_Jan2021.owl* - draft terminology conforming to the EOSC Co-creation model v3 with more hierarchy and fewer terms, as requested by feedback. 6 | 7 | This file is created for use with the Semaphora tool in the terms4FAIRskills January hackathons as part of an EOSC Co-creation award. 8 | 9 | ## References 10 | 11 | CASRAI RDM Glossary - https://casrai.org/rdm-glossary/ 12 | ROBOT - R.C. Jackson, J.P. Balhoff, E. Douglass, N.L. Harris, C.J. Mungall, and J.A. Overton. ROBOT: A tool for automating ontology workflows. BMC Bioinformatics, vol. 20, July 2019. https://doi.org/10.1186/s12859-019-3002-3 13 | Protege - Musen, M.A. The Protégé project: A look back and a look forward. AI Matters. Association of Computing Machinery Specific Interest Group in Artificial Intelligence, 1(4), June 2015. https://doi.org/10.1145/2557001.25757003 14 | -------------------------------------------------------------------------------- /src/metadata/t4fs.yml: -------------------------------------------------------------------------------- 1 | # PURL configuration for http://purl.obolibrary.org/obo/t4fs 2 | 3 | idspace: T4FS 4 | base_url: /obo/t4fs 5 | 6 | products: 7 | - t4fs.owl: https://raw.githubusercontent.com/terms4FAIRskills/FAIRterminology/main/t4fs.owl 8 | - t4fs.obo: https://raw.githubusercontent.com/terms4FAIRskills/FAIRterminology/main/t4fs.obo 9 | 10 | term_browser: ols 11 | example_terms: 12 | - T4FS_0000000 13 | 14 | entries: 15 | 16 | - prefix: /releases/ 17 | replacement: https://raw.githubusercontent.com/terms4FAIRskills/FAIRterminology/v 18 | 19 | - prefix: /tracker/ 20 | replacement: https://github.com/terms4FAIRskills/FAIRterminology/issues 21 | 22 | - prefix: /about/ 23 | replacement: http://www.ontobee.org/ontology/T4FS?iri=http://purl.obolibrary.org/obo/ 24 | 25 | ## generic fall-through, serve direct from github by default 26 | - prefix: / 27 | replacement: https://raw.githubusercontent.com/terms4FAIRskills/FAIRterminology/main/ 28 | -------------------------------------------------------------------------------- /src/scripts/make-lowercase.ru: -------------------------------------------------------------------------------- 1 | # Convert any uppercase first letters to lowercase 2 | # in classes that belong to T4FS 3 | prefix owl: 4 | prefix rdfs: 5 | prefix rdf: 6 | 7 | DELETE { 8 | ?class rdfs:label ?label . 9 | } 10 | INSERT { 11 | ?class rdfs:label ?newlabel . 12 | } 13 | WHERE { 14 | { 15 | ?class a owl:Class . 16 | OPTIONAL { ?class rdfs:label ?label } 17 | FILTER (regex( str(?label), '^[A-E,G-Z][A-Za-z ]')) 18 | BIND (lcase(?label) AS ?newlabel) 19 | #BIND (SUBSTR(?label, 1, 1) AS ?first) 20 | #BIND (if (?first="F", ?first, lcase(?first)) AS ?lowerfirst) 21 | #BIND (lcase(?first) AS ?lowerfirst) 22 | #BIND (REPLACE( str(?label) , '^[A-Z]', ?lowerfirst) AS ?newlabel) 23 | } 24 | MINUS { 25 | ?class rdfs:comment ?comment 26 | FILTER (regex( str(?comment), "CASRAI")) 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/scripts/mapping.pl: -------------------------------------------------------------------------------- 1 | #/usr/bin/perl -w 2 | 3 | # Single-use script (May 2021) for mapping initial set of IRIs to a 4 | # consistent naming and numbering scheme. 5 | # 6 | # Example: perl scripts/mapping.pl < build/t4fsIRIs-list.csv > build/mapping.csv 7 | # 8 | # Use scripts/t4fsIRIs-list.sparql to create build/t4fsIRIs-list.csv 9 | # Output of this perl script can be passed to robot rename, e.g. 10 | # java -jar build/robot.jar rename --input t4fs.owl --mappings build/mapping.csv --add-prefix "t4fs: http://terms4FAIRskills.org/FAIRterminology" --output build/t4fs.owl 11 | # 12 | # Created by Allyson Lister 13 | 14 | use strict; 15 | use warnings; 16 | 17 | my $initialValue = 0; 18 | 19 | while ( my $line = <> ) { 20 | chomp $line ; 21 | $line =~s/\s+//g; 22 | 23 | my $nextnumber = sprintf("%07d", $initialValue); 24 | $initialValue++; 25 | 26 | print "$line,https://github.com/terms4fairskills/FAIRterminology/T4FS_$nextnumber\n"; 27 | } 28 | -------------------------------------------------------------------------------- /src/ontology/DEPRECATION.md: -------------------------------------------------------------------------------- 1 | 2 | # Deprecation Policy 3 | 4 | terms4FAIRskills occasionally needs to deprecate a class. In such cases, first please remember to work with the template spreadsheet as outlined in the [editor documentation](README-editors.md). Then, please ensure you perform the following steps: 5 | 6 | 1. Prefix the definition of the term (column D, `IAO:0000115 AL definition@en`) with "OBSOLETE." 7 | 2. If merging with another term: Copy any relevant properties / annotation from the term you are deprecating to the term that will remain. 8 | 3. Remove the parent term and any subclassof axioms (column c). 9 | 4. Add `http://www.geneontology.org/formats/oboInOwl#ObsoleteClass` as the parent term of the class (column C). 10 | 5. Add a comment to the deprecated term stating which other term it is redundant with, and/or any appropriate comment for why this term is being deprecated. (column L) 11 | 6. Set `owl:deprecated` (column M) to `1` (true) 12 | -------------------------------------------------------------------------------- /initial_prototyping/v2-Dec2020/README.md: -------------------------------------------------------------------------------- 1 | # terms4FAIRskills 2 | 3 | ## fso draft December 2020 4 | 5 | *fso.owx* - draft terminology conforming to the EOSC Co-creation model and incorporating 346 terms from the CASRAI RDM Glossary. 6 | *fso_casrai.owl* - work in progress version of the terminology without a number of relations. 7 | *fso_casrai.tsv* - tsv file of the terminology, before conversion into OWL format via ROBOT. 8 | 9 | ## References 10 | 11 | CASRAI RDM Glossary - https://casrai.org/rdm-glossary/ 12 | ROBOT - R.C. Jackson, J.P. Balhoff, E. Douglass, N.L. Harris, C.J. Mungall, and J.A. Overton. ROBOT: A tool for automating ontology workflows. BMC Bioinformatics, vol. 20, July 2019. https://doi.org/10.1186/s12859-019-3002-3 13 | Protege - Musen, M.A. The Protégé project: A look back and a look forward. AI Matters. Association of Computing Machinery Specific Interest Group in Artificial Intelligence, 1(4), June 2015. https://doi.org/10.1145/2557001.25757003 14 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | build/ 2 | .DS_Store 3 | semantic.cache 4 | bin/ 5 | target/ 6 | 7 | *.tmp 8 | *.tmp.obo 9 | *.tmp.owl 10 | *.tmp.json 11 | 12 | src/ontology/mirror 13 | src/ontology/mirror/* 14 | src/ontology/reports/* 15 | src/ontology/t4fs.owl 16 | src/ontology/t4fs.obo 17 | src/ontology/t4fs.json 18 | src/ontology/t4fs-base.* 19 | src/ontology/t4fs-basic.* 20 | src/ontology/t4fs-full.* 21 | src/ontology/t4fs-simple.* 22 | src/ontology/t4fs-simple-non-classified.* 23 | src/ontology/t4fs-community.* 24 | 25 | src/ontology/seed.txt 26 | src/ontology/dosdp-tools.log 27 | src/ontology/ed_definitions_merged.owl 28 | src/ontology/ontologyterms.txt 29 | src/ontology/simple_seed.txt 30 | src/ontology/patterns 31 | src/ontology/merged-t4fs-edit.owl 32 | 33 | src/ontology/target/ 34 | src/ontology/tmp/* 35 | !src/ontology/tmp/README.md 36 | 37 | src/ontology/imports/*_terms_combined.txt 38 | 39 | src/patterns/data/**/*.ofn 40 | src/patterns/data/**/*.txt 41 | src/patterns/pattern_owl_seed.txt 42 | src/patterns/all_pattern_terms.txt 43 | -------------------------------------------------------------------------------- /src/scripts/add_en_defsource.rq: -------------------------------------------------------------------------------- 1 | # give all definition sources and their accompanying definitions 2 | # the @en language. 3 | 4 | PREFIX owl: 5 | PREFIX obo: 6 | 7 | DELETE { 8 | ?class obo:IAO_0000115 ?annValue . 9 | ?def_annot owl:annotatedSource ?class ; 10 | owl:annotatedProperty obo:IAO_0000115 ; 11 | owl:annotatedTarget ?annValue ; 12 | obo:IAO_0000119 ?subValue . 13 | } 14 | INSERT { 15 | ?class obo:IAO_0000115 ?annValue_en . 16 | ?def_annot owl:annotatedSource ?class ; 17 | owl:annotatedProperty obo:IAO_0000115 ; 18 | owl:annotatedTarget ?annValue_en ; 19 | obo:IAO_0000119 ?subValue_en . 20 | } 21 | WHERE { 22 | ?class a owl:Class . 23 | ?class obo:IAO_0000115 ?annValue . 24 | BIND(IF(LANG(?annValue) = "", STRLANG(?annValue, "en"), ?annValue) AS ?annValue_en) 25 | OPTIONAL { 26 | ?def_annot owl:annotatedSource ?class ; 27 | owl:annotatedProperty obo:IAO_0000115 ; 28 | owl:annotatedTarget ?annValue ; 29 | obo:IAO_0000119 ?subValue . 30 | BIND(IF(LANG(?subValue) = "", STRLANG(?subValue, "en"), ?subValue) AS ?subValue_en) 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/templates/README.md: -------------------------------------------------------------------------------- 1 | # ROBOT templates 2 | 3 | Editors of this ontology should use the templates available for comment via our [Google spreadsheet](https://docs.google.com/spreadsheets/d/1pu9o8oiP1hwnyQk1tv_8cdoe07GngINRD5pGz04m4Zo/edit?usp=sharing). The default permissions for this spreadsheet is Comment only. Please ask if you would like permission to modify it. The "traditional" editable document for the ODK build procedure is [src/ontology/t4fs-edit.owl](src/ontology/t4fs-edit.owl), however -- other than the top-level ontology annotations -- its contents are added via templates. 4 | 5 | By using Google spreadsheets, we open up our ontology for comment and editing to our community who are experts in the domain but who may not be ontologists. 6 | 7 | ## Converting TSVs to OWL 8 | 9 | Since ODK 1.4 (Feb 2023), the production of an ODK release via templates is available in the production version of ODK. 10 | 11 | Run from the src/ontology directory, the following command will take the three TSV files contained within this `template` directory and re-build `components/t4fs-template.owl`. 12 | 13 | ``` 14 | ./run.sh make recreate-t4fs-template 15 | ``` 16 | -------------------------------------------------------------------------------- /.github/workflows/qc.yml: -------------------------------------------------------------------------------- 1 | # Basic ODK workflow 2 | 3 | name: CI 4 | 5 | # Controls when the action will run. 6 | on: 7 | # Triggers the workflow on push or pull request events but only for the main branch 8 | push: 9 | branches: [ main ] 10 | pull_request: 11 | branches: [ main ] 12 | 13 | # Allows you to run this workflow manually from the Actions tab 14 | workflow_dispatch: 15 | 16 | # A workflow run is made up of one or more jobs that can run sequentially or in parallel 17 | jobs: 18 | # This workflow contains a single job called "ontology_qc" 19 | ontology_qc: 20 | # The type of runner that the job will run on 21 | runs-on: ubuntu-latest 22 | container: obolibrary/odkfull:v1.5.4 23 | 24 | # Steps represent a sequence of tasks that will be executed as part of the job 25 | steps: 26 | # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it 27 | - uses: actions/checkout@v3 28 | 29 | - name: Run ontology QC checks 30 | env: 31 | DEFAULT_BRANCH: main 32 | run: cd src/ontology && make ROBOT_ENV='ROBOT_JAVA_ARGS=-Xmx6G' test IMP=false PAT=false MIR=false 33 | 34 | -------------------------------------------------------------------------------- /src/sparql/README.md: -------------------------------------------------------------------------------- 1 | # Sparql checks 2 | 3 | [SPARQL](https://www.w3.org/TR/rdf-sparql-query/) is a W3C standard 4 | query language for RDF. This directory contains useful SPARQL queries 5 | for perfoming over the ontology. 6 | 7 | SPARQL can be executed on a triplestore or directly on any OWL 8 | file. The queries here are all executed on either t4fs-edit.obo or 9 | downstream products in the [ontology](../ontology/) folder. We use 10 | `robot` as this allows easy execution over any Obo-format or OWL file. 11 | 12 | We break the queries into 3 categories: 13 | 14 | ## Constraint Violation checks 15 | 16 | These are all named `*violation.sparql`. A subset of these are 17 | configured to be executed via travis. If these return any results, 18 | then the build will fail. 19 | 20 | Consult the individual sparql files to see the intent of the check 21 | 22 | ## Construct queries 23 | 24 | These are named `construct*.sparql`, and always have the form `CONSTRUCT ...`. 25 | 26 | These are used to generate new OWL axioms that can be inserted back 27 | into the ontology. 28 | 29 | ## Reports 30 | 31 | The remaining SPARQL queries are for informative purposes. A subset 32 | may be executed with each release. -------------------------------------------------------------------------------- /src/scripts/update_repo.sh: -------------------------------------------------------------------------------- 1 | echo "This (experimental) update script will create a new repo according to your config file. It will:" 2 | echo "(1) overwrite your repositories Makefile, ODK sparql queries (your custom queries wont be touched) and docker wrapper (run.sh)." 3 | echo "(2) and add missing files, if any." 4 | 5 | set -e 6 | 7 | OID=t4fs 8 | ROOTDIR=../.. 9 | SRCDIR=.. 10 | CONFIG=$OID"-odk.yaml" 11 | 12 | rm -rf target 13 | mkdir target 14 | /tools/odk.py seed -c -g -C $CONFIG 15 | ls -l target/$OID/src 16 | ls -l $SRCDIR/ 17 | cp target/$OID/src/scripts/update_repo.sh $SRCDIR/scripts/ 18 | rsync -r -u --ignore-existing --exclude 'patterns/data/default/example.tsv' --exclude 'patterns/dosdp-patterns/example.yaml' target/$OID/src/ $SRCDIR/ 19 | cp target/$OID/src/ontology/Makefile $SRCDIR/ontology/ 20 | cp target/$OID/src/ontology/run.sh $SRCDIR/ontology/ 21 | cp -r target/$OID/src/sparql/* $SRCDIR/sparql/ 22 | mkdir -p $ROOTDIR/.github 23 | mkdir -p $ROOTDIR/.github/workflows 24 | cp target/$OID/.github/workflows/qc.yml $ROOTDIR/.github/workflows/qc.yml 25 | 26 | 27 | 28 | 29 | echo "WARNING: These files should be manually migrated: mkdocs.yaml, .gitignore, src/ontology/catalog.xml (if you added a new import or component)" 30 | 31 | echo "Ontology repository update successfully completed." -------------------------------------------------------------------------------- /src/metadata/README.md: -------------------------------------------------------------------------------- 1 | Metadata files for the OBO Library 2 | 3 | * [t4fs.yml](t4fs.yml) 4 | * Determines how your purl.obolibrary.org/obo/t4fs/ redirects will be handled 5 | * Go here: https://github.com/OBOFoundry/purl.obolibrary.org/tree/master/config 6 | * Click [New File](https://github.com/OBOFoundry/purl.obolibrary.org/new/master/config) 7 | * Paste in the contents of [t4fs.yml](t4fs.yml) 8 | * Click "Commit new file" 9 | * IMPORTANT: remember to make a pull request 10 | * An OBO admin will merge your Pull Request *providing it meets the requirements of the OBO library* 11 | * [t4fs.md](t4fs.md) 12 | * Determines how your metadata is shown on OBO Library, OLS and AberOWL 13 | * Go here: https://github.com/OBOFoundry/OBOFoundry.github.io/tree/master/ontology 14 | * Click [New File](https://github.com/OBOFoundry/OBOFoundry.github.io/new/master/ontology) 15 | * Paste in the contents of [t4fs.md](t4fs.md) 16 | * Click "Commit new file" 17 | * IMPORTANT: remember to make a pull request 18 | * An OBO admin will merge your Pull Request *providing it meets the requirements of the OBO library* 19 | 20 | For more background see: 21 | 22 | * http://obofoundry.org/ 23 | * http://obofoundry.org/faq/how-do-i-edit-metadata.html 24 | 25 | -------------------------------------------------------------------------------- /src/metadata/t4fs.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: ontology_detail 3 | id: t4fs 4 | title: terms4FAIRskills (T4FS) 5 | jobs: 6 | - id: https://travis-ci.org/terms4FAIRskills/FAIRterminology 7 | type: travis-ci 8 | build: 9 | checkout: git clone https://github.com/terms4FAIRskills/FAIRterminology.git 10 | system: git 11 | path: "." 12 | contact: 13 | email: 14 | label: 15 | github: 16 | description: terms4FAIRskills (T4FS) is an ontology... 17 | domain: stuff 18 | homepage: https://github.com/terms4FAIRskills/FAIRterminology 19 | products: 20 | - id: t4fs.owl 21 | name: "terms4FAIRskills (T4FS) main release in OWL format" 22 | - id: t4fs.obo 23 | name: "terms4FAIRskills (T4FS) additional release in OBO format" 24 | - id: t4fs.json 25 | name: "terms4FAIRskills (T4FS) additional release in OBOJSon format" 26 | - id: t4fs/t4fs-base.owl 27 | name: "terms4FAIRskills (T4FS) main release in OWL format" 28 | - id: t4fs/t4fs-base.obo 29 | name: "terms4FAIRskills (T4FS) additional release in OBO format" 30 | - id: t4fs/t4fs-base.json 31 | name: "terms4FAIRskills (T4FS) additional release in OBOJSon format" 32 | dependencies: 33 | - id: bfo 34 | - id: iao 35 | 36 | tracker: https://github.com/terms4FAIRskills/FAIRterminology/issues 37 | license: 38 | url: http://creativecommons.org/licenses/by/3.0/ 39 | label: CC-BY 40 | activity_status: active 41 | --- 42 | 43 | Enter a detailed description of your ontology here. You can use arbitrary markdown and HTML. 44 | You can also embed images too. 45 | 46 | -------------------------------------------------------------------------------- /src/ontology/t4fs-idranges.owl: -------------------------------------------------------------------------------- 1 | ## ID Ranges File 2 | Prefix: rdf: 3 | Prefix: idsfor: 4 | Prefix: dce: 5 | Prefix: xsd: 6 | Prefix: allocatedto: 7 | Prefix: xml: 8 | Prefix: idprefix: 9 | Prefix: iddigits: 10 | Prefix: rdfs: 11 | Prefix: idrange: 12 | Prefix: owl: 13 | 14 | Ontology: 15 | 16 | 17 | Annotations: 18 | idsfor: "T4FS", 19 | idprefix: "http://purl.obolibrary.org/obo/T4FS_", 20 | iddigits: 7 21 | 22 | AnnotationProperty: idprefix: 23 | 24 | 25 | AnnotationProperty: iddigits: 26 | 27 | 28 | AnnotationProperty: idsfor: 29 | 30 | 31 | AnnotationProperty: allocatedto: 32 | 33 | Datatype: idrange:1 34 | 35 | Annotations: 36 | allocatedto: "Allyson Lister" 37 | 38 | EquivalentTo: 39 | xsd:integer[>= 0000661 , <= 0001000] 40 | 41 | 42 | Datatype: idrange:2 43 | 44 | Annotations: 45 | allocatedto: "ADDITIONAL EDITOR" 46 | 47 | EquivalentTo: 48 | xsd:integer[>= 1000000 , <= 1999999] 49 | 50 | 51 | Datatype: xsd:integer 52 | Datatype: rdf:PlainLiteral 53 | -------------------------------------------------------------------------------- /src/ontology/bfo_import.owl: -------------------------------------------------------------------------------- 1 | 2 | 11 | 12 | 13 | 14 | 2022-09-09 15 | 16 | 17 | 18 | 19 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /src/ontology/t4fs-edit.owl: -------------------------------------------------------------------------------- 1 | Prefix(:=) 2 | Prefix(dce:=) 3 | Prefix(obo:=) 4 | Prefix(owl:=) 5 | Prefix(rdf:=) 6 | Prefix(xml:=) 7 | Prefix(xsd:=) 8 | Prefix(rdfs:=) 9 | Prefix(dcterms:=) 10 | Prefix(oboInOwl:=) 11 | 12 | 13 | Ontology( 14 | Import() 15 | Import() 16 | Import() 17 | Annotation(dcterms:description "terms4FAIRskills describes the competencies, skills and knowledge associated with making and keeping data FAIR.\\nThis terminology applies to a variety of use cases, including: assisting with the creation and assessment of stewardship curricula; facilitating the annotation, discovery and evaluation of FAIR-enabling materials \\(e.g. training\\) and resources; enabling the formalisation of job descriptions and CVs with recognised, structured competencies.\\nIt is intended to be of use to trainers who teach FAIR data skills, researchers who wish to identify skill gaps in their teams and managers who need to recruit individuals to relevant roles.") 18 | Annotation(dcterms:license ) 19 | Annotation(dcterms:title "terms4FAIRskills (T4FS)") 20 | Annotation(rdfs:comment "terms4FAIRskills by the terms4FAIRskills developers is licensed under CC BY 4.0. You are free to share (copy and redistribute the material in any medium or format) and adapt (remix, transform, and build upon the material) for any purpose, even commercially. for any purpose, even commercially. The licensor cannot revoke these freedoms as long as you follow the license terms. You must give appropriate credit (by using the original ontology IRI for the whole ontology and original term IRIs for individual terms), provide a link to the license, and indicate if any changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use."^^xsd:string) 21 | 22 | Declaration(AnnotationProperty(dcterms:description)) 23 | Declaration(AnnotationProperty(dcterms:license)) 24 | Declaration(AnnotationProperty(dcterms:title)) 25 | 26 | ) -------------------------------------------------------------------------------- /src/scripts/validate_id_ranges.sc: -------------------------------------------------------------------------------- 1 | import $ivy.`net.sourceforge.owlapi:owlapi-distribution:4.5.16` 2 | import $ivy.`com.outr::scribe-slf4j:2.7.12` 3 | import org.semanticweb.owlapi.apibinding.OWLManager 4 | import org.semanticweb.owlapi.model._ 5 | import org.semanticweb.owlapi.vocab.OWLFacet 6 | import java.io.File 7 | import scala.collection 8 | import scala.collection.mutable 9 | import scala.jdk.CollectionConverters._ 10 | @main 11 | def main(id_range_file: os.Path) = { 12 | val o = OWLManager.createOWLOntologyManager().loadOntology(IRI.create(id_range_file.toIO)) 13 | val allMyFacets = mutable.ListBuffer.empty[MyFacet] 14 | for (dt <- o.getDatatypesInSignature().asScala) { 15 | val defs = o.getAxioms(dt) 16 | for (ax <- defs.asScala) { 17 | val range = ax.getDataRange() 18 | val f = new MyFacet() 19 | f.id = dt.toString() 20 | range.accept(new OWLDataRangeVisitor() { 21 | override 22 | def visit(owlDatatype: OWLDatatype) = () 23 | override 24 | def visit(owlDataOneOf: OWLDataOneOf) = () 25 | override 26 | def visit(owlDataComplementOf: OWLDataComplementOf) = () 27 | override 28 | def visit(owlDataIntersectionOf: OWLDataIntersectionOf) = () 29 | override 30 | def visit(owlDataUnionOf: OWLDataUnionOf) = () 31 | override 32 | def visit(owlDatatypeRestriction: OWLDatatypeRestriction) = { 33 | for (fr <- owlDatatypeRestriction.getFacetRestrictions().asScala) { 34 | var i = fr.getFacetValue().parseInteger() 35 | if(fr.getFacet().equals(OWLFacet.MIN_INCLUSIVE)) { 36 | f.min = i 37 | } else if(fr.getFacet().equals(OWLFacet.MAX_INCLUSIVE)) { 38 | f.max = i 39 | } else if(fr.getFacet().equals(OWLFacet.MIN_EXCLUSIVE)) { 40 | i += 1 41 | f.min = i 42 | } else if(fr.getFacet().equals(OWLFacet.MAX_EXCLUSIVE)) { 43 | i -= 1 44 | f.max = i 45 | } else { 46 | log("Unknown range restriction: "+fr) 47 | } 48 | } 49 | } 50 | }) 51 | log("Testing range: "+f) 52 | testFacetViolation(f,allMyFacets) 53 | allMyFacets.append(f) 54 | } 55 | } 56 | } 57 | def testFacetViolation(f: MyFacet , allMyFacets: collection.Seq[MyFacet]) = { 58 | for (f_p <- allMyFacets) { 59 | if (((f.min <= f_p.max) && (f_p.min <= f.max))) { 60 | throw new IllegalStateException(f + " overlaps with " + f_p + "!") 61 | } 62 | } 63 | } 64 | def log(o: Object) = { 65 | println(o.toString()) 66 | } 67 | class MyFacet { 68 | var min: Int = _ 69 | var max: Int = _ 70 | var id: String = _ 71 | override 72 | def toString(): String = { 73 | return "Facet{" + id + "}[min:" + min + " max:" + max + "]" 74 | } 75 | } -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to make participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. 6 | 7 | ## Our Standards 8 | 9 | Examples of behavior that contributes to creating a positive environment include: 10 | 11 | * Using welcoming and inclusive language 12 | * Being respectful of differing viewpoints and experiences 13 | * Gracefully accepting constructive criticism 14 | * Focusing on what is best for the community 15 | * Showing empathy towards other community members 16 | 17 | Examples of unacceptable behavior by participants include: 18 | 19 | * The use of sexualized language or imagery and unwelcome sexual attention or advances 20 | * Trolling, insulting/derogatory comments, and personal or political attacks 21 | * Public or private harassment 22 | * Publishing others' private information, such as a physical or electronic address, without explicit permission 23 | * Other conduct which could reasonably be considered inappropriate in a professional setting 24 | 25 | ## Our Responsibilities 26 | 27 | Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. 28 | 29 | Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. 30 | 31 | ## Scope 32 | 33 | This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. 34 | 35 | ## Enforcement 36 | 37 | Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by [contacting the project team](contact.md). All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. 38 | 39 | Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. 40 | 41 | ## Attribution 42 | 43 | This code of conduct has been derived from the excellent code of conduct of the [ATOM project](https://github.com/atom/atom/blob/master/CODE_OF_CONDUCT.md) which in turn is adapted from the [Contributor Covenant][homepage], version 1.4, available at [https://contributor-covenant.org/version/1/4][version] 44 | 45 | [homepage]: https://contributor-covenant.org 46 | [version]: https://contributor-covenant.org/version/1/4/ 47 | -------------------------------------------------------------------------------- /initial_prototyping/v1/Makefile: -------------------------------------------------------------------------------- 1 | ## 2 | ## Top-level targets 3 | ## 4 | 5 | # By default, this Makefile will build the ontology from a ROBOT template csv. 6 | build: build/robot.jar build_from_template 7 | 8 | # The build_release target should be run with a current release number specified 9 | # with RELNUM, e.g. RELNUM=0.1.0 10 | # It creates the release files in build/ but does not copy them to a release dir 11 | build_release: check_relnum clean build add_version 12 | 13 | # The release target will create a new release directory locally with all appropriate files 14 | release: copy_release_files 15 | 16 | ## 17 | ## Variables 18 | ## 19 | 20 | STEM := fso 21 | # ROBOT_REMOTE_LOCATION := https://build.berkeleybop.org/job/robot/lastSuccessfulBuild/artifact/bin/robot.jar 22 | ROBOT_REMOTE_LOCATION := https://github.com/ontodev/robot/releases/download/v1.4.3/robot.jar 23 | ROBOT := java -jar build/robot.jar 24 | 25 | # The TSV file that is the template for the generated OWL file 26 | TEMPLATE_CSV := $(STEM).tsv 27 | # The owl file built from the CSV file 28 | GENERATED_OWL := $(STEM).owl 29 | 30 | # Where all the files created by this makefile should go 31 | BUILD_DIR := build 32 | 33 | # The release name 34 | RELEASE_NAME := $(STEM)-$(RELNUM).owl 35 | # The release directory 36 | RELEASE_TOP_DIR := ../release 37 | RELEASE_DIR := $(RELEASE_TOP_DIR)/$(RELNUM) 38 | 39 | # The build location of the OWL file 40 | BUILD_OWLFILE := $(BUILD_DIR)/$(GENERATED_OWL) 41 | # The OWL file with release numbers added 42 | BUILD_RELFILE := $(BUILD_DIR)/$(RELEASE_NAME) 43 | # The release file in the release directory 44 | RELEASE_FILE := $(RELEASE_DIR)/$(RELEASE_NAME) 45 | 46 | # Various IRIs for the OWL files created within this Makefile 47 | IRI_BASE := http://www.fairsharing.org/$(STEM) 48 | RELEASE_IRI := $(IRI_BASE)/$(STEM).owl 49 | RELEASE_VERSION_IRI := $(IRI_BASE)/$(RELEASE_NAME) 50 | 51 | ## 52 | ## Standalone targets 53 | ## 54 | 55 | # Compare two OWL files, providing LEFT and RIGHT paths and filenames 56 | robot_diff: 57 | $(ROBOT) diff --left $(LEFT) --right $(RIGHT) > $(BUILD_DIR)/diff.txt 58 | 59 | # Creates a diff between RELNUM and PREVIOUS_RELNUM 60 | diff_release: check_relnum 61 | test $(PREVIOUS_RELNUM) 62 | robot_diff LEFT=$(RELEASE_TOP_DIR)/$(PREVIOUS_RELNUM)/$(STEM)-$(PREVIOUS_RELNUM).owl RIGHT=$(RELEASE_FILE) 63 | 64 | 65 | ## 66 | ## Dependent Targets 67 | ## 68 | 69 | clean: 70 | rm -rf build 71 | 72 | check_relnum: 73 | test $(RELNUM) 74 | 75 | check_relfiles: check_relnum 76 | test -f $(BUILD_RELFILE) 77 | 78 | # All files, including the release files, are put into build/ in case there are 79 | # any issues with the run. They can be moved to a release directory via the release target 80 | # then committed manually once we're sure they're ok. 81 | reqd_build_dirs: 82 | mkdir -p $(BUILD_DIR) 83 | 84 | # BUILD_DIR must already be present, and RELEASE_DIR must not be present yet. 85 | reqd_release_dirs: 86 | test -d $(BUILD_DIR) 87 | mkdir $(RELEASE_DIR) 88 | 89 | build/robot.jar: | reqd_build_dirs 90 | curl -L -o build/robot.jar $(ROBOT_REMOTE_LOCATION) 91 | chmod ug+x build/robot.jar 92 | 93 | build_from_template: 94 | $(ROBOT) template --template $(TEMPLATE_CSV) \ 95 | --prefix "$(STEM): $(IRI_BASE)/" \ 96 | --ontology-iri $(RELEASE_IRI) --output $(BUILD_OWLFILE) 97 | 98 | add_version : template 99 | $(ROBOT) annotate --input $(GENERATED_OWL) \ 100 | --ontology-iri $(RELEASE_IRI) \ 101 | --version-iri $(RELEASE_VERSION_IRI) \ 102 | --output $(BUILD_RELFILE) 103 | 104 | 105 | copy_release_files: | reqd_release_dirs check_relfiles 106 | cp $(BUILD_RELFILE) $(RELEASE_DIR) 107 | -------------------------------------------------------------------------------- /src/ontology/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # Wrapper script for docker. 3 | # 4 | # This is used primarily for wrapping the GNU Make workflow. 5 | # Instead of typing "make TARGET", type "./run.sh make TARGET". 6 | # This will run the make workflow within a docker container. 7 | # 8 | # The assumption is that you are working in the src/ontology folder; 9 | # we therefore map the whole repo (../..) to a docker volume. 10 | # 11 | # To use singularity instead of docker, please issue 12 | # export USE_SINGULARITY= 13 | # before running this script. 14 | # 15 | # See README-editors.md for more details. 16 | 17 | set -e 18 | 19 | if [ -f run.sh.conf ]; then 20 | . ./run.sh.conf 21 | fi 22 | 23 | # Look for a GitHub token 24 | if [ -n "$GH_TOKEN" ]; then 25 | : 26 | elif [ -f ../../.github/token.txt ]; then 27 | GH_TOKEN=$(cat ../../.github/token.txt) 28 | elif [ -f $XDG_CONFIG_HOME/ontology-development-kit/github/token ]; then 29 | GH_TOKEN=$(cat $XDG_CONFIG_HOME/ontology-development-kit/github/token) 30 | elif [ -f "$HOME/Library/Application Support/ontology-development-kit/github/token" ]; then 31 | GH_TOKEN=$(cat "$HOME/Library/Application Support/ontology-development-kit/github/token") 32 | fi 33 | 34 | # SSH agent socket 35 | # On macOS, we cannot use $SSH_AUTH_SOCK directly, 36 | # we need to use a "magic" socket instead. 37 | case "$(uname)" in 38 | Darwin) 39 | ODK_SSH_AUTH_SOCKET=/run/host-services/ssh-auth.sock 40 | ;; 41 | *) 42 | ODK_SSH_AUTH_SOCKET=$SSH_AUTH_SOCK 43 | ;; 44 | esac 45 | ODK_SSH_BIND= 46 | if [ -n "$ODK_SSH_AUTH_SOCKET" ]; then 47 | ODK_SSH_BIND=",$ODK_SSH_AUTH_SOCKET:/run/host-services/ssh-auth.sock" 48 | fi 49 | 50 | ODK_IMAGE=${ODK_IMAGE:-odkfull} 51 | TAG_IN_IMAGE=$(echo $ODK_IMAGE | awk -F':' '{ print $2 }') 52 | if [ -n "$TAG_IN_IMAGE" ]; then 53 | # Override ODK_TAG env var if IMAGE already includes a tag 54 | ODK_TAG=$TAG_IN_IMAGE 55 | ODK_IMAGE=$(echo $ODK_IMAGE | awk -F':' '{ print $1 }') 56 | fi 57 | ODK_TAG=${ODK_TAG:-latest} 58 | ODK_JAVA_OPTS=${ODK_JAVA_OPTS:--Xmx8G} 59 | ODK_DEBUG=${ODK_DEBUG:-no} 60 | 61 | ODK_USER_ID=${ODK_USER_ID:-$(id -u)} 62 | ODK_GROUP_ID=${ODK_GROUP_ID:-$(id -g)} 63 | 64 | # Convert OWLAPI_* environment variables to the OWLAPI as Java options 65 | # See http://owlcs.github.io/owlapi/apidocs_4/org/semanticweb/owlapi/model/parameters/ConfigurationOptions.html 66 | # for a list of allowed options 67 | OWLAPI_OPTIONS_NAMESPACE=org.semanticweb.owlapi.model.parameters.ConfigurationOptions 68 | for owlapi_var in $(env | sed -n s/^OWLAPI_//p) ; do 69 | ODK_JAVA_OPTS="$ODK_JAVA_OPTS -D$OWLAPI_OPTIONS_NAMESPACE.${owlapi_var%=*}=${owlapi_var#*=}" 70 | done 71 | 72 | TIMECMD= 73 | if [ x$ODK_DEBUG = xyes ]; then 74 | # If you wish to change the format string, take care of using 75 | # non-breaking spaces (U+00A0) instead of normal spaces, to 76 | # prevent the shell from tokenizing the format string. 77 | echo "Running obolibrary/${ODK_IMAGE}:${ODK_TAG} with '${ODK_JAVA_OPTS}' as options for ROBOT and other Java-based pipeline steps." 78 | TIMECMD="/usr/bin/time -f ### DEBUG STATS ###\nElapsed time: %E\nPeak memory: %M kb" 79 | fi 80 | rm -f tmp/debug.log 81 | 82 | VOLUME_BIND=$PWD/../../:/work$ODK_SSH_BIND 83 | WORK_DIR=/work/src/ontology 84 | 85 | if [ -n "$ODK_BINDS" ]; then 86 | VOLUME_BIND="$VOLUME_BIND,$ODK_BINDS" 87 | fi 88 | 89 | if [ -n "$USE_SINGULARITY" ]; then 90 | 91 | singularity exec --cleanenv $ODK_SINGULARITY_OPTIONS \ 92 | --env "ROBOT_JAVA_ARGS=$ODK_JAVA_OPTS,JAVA_OPTS=$ODK_JAVA_OPTS,SSH_AUTH_SOCK=/run/host-services/ssh-auth.sock,ODK_USER_ID=$ODK_USER_ID,ODK_GROUP_ID=$ODK_GROUP_ID,ODK_DEBUG=$ODK_DEBUG" \ 93 | --bind $VOLUME_BIND \ 94 | -W $WORK_DIR \ 95 | docker://obolibrary/$ODK_IMAGE:$ODK_TAG $TIMECMD "$@" 96 | else 97 | BIND_OPTIONS="-v $(echo $VOLUME_BIND | sed 's/,/ -v /')" 98 | docker run $ODK_DOCKER_OPTIONS $BIND_OPTIONS -w $WORK_DIR \ 99 | -e ROBOT_JAVA_ARGS="$ODK_JAVA_OPTS" -e JAVA_OPTS="$ODK_JAVA_OPTS" -e SSH_AUTH_SOCK=/run/host-services/ssh-auth.sock -e ODK_USER_ID=$ODK_USER_ID -e ODK_GROUP_ID=$ODK_GROUP_ID -e ODK_DEBUG=$ODK_DEBUG \ 100 | --rm -ti obolibrary/$ODK_IMAGE:$ODK_TAG $TIMECMD "$@" 101 | fi 102 | 103 | case "$@" in 104 | *update_repo*|*release*) 105 | echo "Please remember to update your ODK image from time to time: https://oboacademy.github.io/obook/howto/odk-update/." 106 | ;; 107 | esac -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to terms4FAIRskills (T4FS) 2 | 3 | :+1: First of all: Thank you for taking the time to contribute! 4 | 5 | The following is a set of guidelines for contributing to T4FS. 6 | These guidelines are not strict rules. Use your best judgment, and feel free to propose 7 | changes to this document in a pull request. 8 | 9 | ## Table Of Contents 10 | 11 | - [Code of Conduct](#code-of-conduct) 12 | - [Guidelines for Contributions and Requests](#contributions) 13 | * [Reporting problems with the ontology](#reporting-bugs) 14 | * [Requesting new terms](#requesting-terms) 15 | * [Suggesting Enhancements](#suggesting-enhancements) 16 | * [Fixing problems with the ontology by yourself](#fixing problems) 17 | * [Adding new terms by yourself](#adding-terms) 18 | - [Best practices](#best-practices) 19 | * [How to write a great issue?](#great-issues) 20 | * [How to create a great pull/merge request?](#great-pulls) 21 | 22 | 23 | 24 | ## Code of Conduct 25 | 26 | The terms4FAIRskills (T4FS) team strives to create a 27 | welcoming environment for editors, users and other contributors. 28 | Please carefully read our [Code of Conduct](CODE_OF_CONDUCT.md). 29 | 30 | 31 | 32 | ## Guidelines for Contributions and Requests 33 | 34 | 35 | 36 | ### Reporting problems with the ontology 37 | 38 | Please use our [Issue Tracker](https://github.com/terms4FAIRskills/FAIRterminology/issues/) for reporting problems with the ontology. 39 | To learn how to write a good issue [see here](#great-issues). 40 | 41 | 42 | 43 | ### Requesting new terms 44 | 45 | Before you write a new request, please consider the following: 46 | 47 | - **Does the term already exist?** Before submitting suggestions for new ontology terms, check whether the term exist, 48 | either as a primary term or a synonym term. You can search for your term using [OLS](http://www.ebi.ac.uk/ols/ontologies/t4fs). 49 | - **Can you provide a definition for the term?** It should be very clear what the term means, and you should be 50 | able to provide a concise definition, ideally with a scientific reference. 51 | - **Is the ontology in scope for the term?** Sometimes, it is hard to tell whether a term "belongs" in 52 | and ontology. A rule of thumb is "if a similar term already exists, the new term is probably in scope." 53 | It can be very helpful to mention a very similar concept as part of the term request! 54 | 55 | #### Who can request a term? 56 | 57 | Anyone can request new terms. However, there is not guarantee that your term will be added automatically. Since this is a 58 | community resource, it is often necessary to do at least some of the work of adding the term yourself, see below. 59 | 60 | #### How to write a new term request 61 | 62 | Request a new term _via_ the GitHub [Issue Tracker](https://github.com/terms4FAIRskills/FAIRterminology/issues/). 63 | 64 | It is important to remember that it takes a lot of time for curators to process issues submitted to the tracker. 65 | To make this work easier, please always use issue templates if they are available (https://github.com/terms4FAIRskills/FAIRterminology/issues/new/choose). 66 | 67 | For how to write a good term request, please read the [best practices carefully](#great-issues). 68 | 69 | 70 | 71 | ### How to add a new term 72 | 73 | If you have never edited this ontology before, first follow a [general tutorial](https://oboacademy.github.io/obook/lesson/contributing-to-obo-ontologies) 74 | 75 | **Process**: 76 | 77 | 1. Clone the repository (In case you are not an offical team member, create a fork first) 78 | 2. Create new branch in git, for example `git checkout -b issue123` 79 | 3. Edits to classes/properties the ontology are performed in Google spreadsheets, which are then downloaded and committed to this repository within src/templates. Please see [Templates README](src/templates/README.md) for details of how to make these changes. 80 | 4. Edits to the top-level annotation (e.g. title, description, authors) happen within `src/ontology/t4fs-edit.owl`. Open this file in your favourite editor, i.e. [Protege](https://protege.stanford.edu/). **Careful:** double check you are editing the correct file. There are many ontology files in this repository, but only one _editors file_! 81 | 4. Perform your edits and save your changes 82 | 5. Commit changes to branch 83 | 6. Push changes upstream 84 | 7. Create pull request 85 | 86 | ### How to deprecate terms 87 | 88 | Find out more about our [deprecation policy](src/ontology/DEPRECATION.md). 89 | 90 | ## Guidelines for Building the Release 91 | 92 | If you are part of the team that builds releases, please see our [editors' release documentation](src/ontology/README-editors.md). 93 | 94 | ## Best Practices 95 | 96 | 97 | 98 | ### How to write great issues? 99 | 100 | Please refer to the [OBO Academy best practices](https://oboacademy.github.io/obook/lesson/term-request/). 101 | 102 | 103 | 104 | ### How to create a great pull/merge request? 105 | 106 | Please refer to the [OBO Academy best practices](https://oboacademy.github.io/obook/howto/github-create-pull-request/) 107 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | # terms4FAIRskills (T4FS) 3 | 4 | More information can be found at http://obofoundry.org/ontology/t4fs 5 | 6 | Building a terminology for the skills necessary to make data FAIR and to keep it FAIR. It is now an official OBO Foundry ontology. 7 | 8 | The terms4FAIRskills project aims to create a formalised terminology that describes the competencies, skills and knowledge associated with making and keeping data FAIR. 9 | 10 | This terminology applies to a variety of use cases, including: 11 | - To assist with the creation and assessment of stewardship curricula; 12 | - To facilitate the annotation, discovery and evaluation of FAIR-enabling materials (e.g. training) and resources; 13 | - To enable the formalisation of job descriptions and CVs with recognised, structured competencies. 14 | 15 | The completed terminology is of use to trainers who teach FAIR data skills, researchers who wish to identify skill gaps in their teams and managers who need to recruit individuals to relevant roles. 16 | 17 | This repository is used to store the OWL version of the terminology, plus related files. 18 | 19 | In July 2020, we received notification of our successful application for EOSC co-creation funding to continue this work. 20 | 21 | Thanks to our successful EOSC co-creation proposal, we continued to develop the Terms4FAIRskills (T4FS) using two real-life use cases - the CODATA/RDA Summer Schools and the ELIXIR Training Platform Training and Events Portal (TeSS). Through a number of workshops and hackathons, we iteratively annotated a large number of training materials using the Semaphora annotation tool. 22 | 23 | Our report on this work can be found on Zenodo at the following DOI: [10.5281/zenodo.4705219](https://doi.org/10.5281/zenodo.4705219). 24 | 25 | We continue to develop terms4FAIRskills and our latest terminology will always be found here. New term requests and queries can be posted on our issue tracker. 26 | 27 | For more information on any of the technical aspects of this work, please contact Peter McQuilton or Allyson Lister. 28 | 29 | ## Views on the Ontology 30 | 31 | We currently produce two primary views of this ontology: a complete ontology intended for expert consumption, and fully adhering to the OBO Foundry principles, and a community view that has been simplified for general usage. Please see further details of these in the next sections, which cover release versions and alternative artefacts. 32 | 33 | On top of this, we also provide a number of ways to look at and use the ontology. The one that best suits you depends on your needs and your knowledge of ontologies. 34 | 35 | 36 | 1. _Are you new to ontologies?_ Try our [Google spreadsheet](https://docs.google.com/spreadsheets/d/1pu9o8oiP1hwnyQk1tv_8cdoe07GngINRD5pGz04m4Zo/edit?usp=sharing): This is actually our "master" version of the ontology; we use the [ontology development kit](https://github.com/INCATools/ontology-development-kit) and [ROBOT](http://robot.obolibrary.org/) to convert this spreadsheet into OWL. If you like spreadsheets, and you're just looking for terms to use for tagging, then this might be your best bet. The sheet titled "Index" has a simple list of IRIs and labels for each tag. If you are also interested in definitions, please see the sheet titled "t4fs"; this has all the axioms and properties for each of the terms listed in "index". There's a lot of dense information here (and it is very hard to work out the relationships and hierarchies), so please read on if this isn't right for you. 37 | 2. _Have some experience with ontologies, or want to review our hierarchy?_ Take a look at our [OBO Foundry t4fs page](https://obofoundry.org/ontology/t4fs), and you can see links to a variety of ontology browsers, including [Ontobee](https://ontobee.org/browser/index.php?o=t4fs) and [OLS](http://www.ebi.ac.uk/ols/ontologies/t4fs). Please note that these browsers utilise our full OBO Foundry hierarchy, which is more complex to view initially as it contains all of the BFO/IAO terms required to place t4fs within the OBO Foundry family. To help with that, please see our current diagram for our ontology model (below), as this provides the relationships among all of our top-level t4fs terms without the BFO/IAO hierarchies. 38 | 3. _Are you knowledgeable about ontologies, or just curious?_ Then, as stated below, you can download the ontology in a variety of formats as outlined below (obo, owl and json). 39 | 40 | We've drawn this diagram of all upper-level t4fs terms and the relationships they have to each other, in order to provide an overview of how we think about and structure the ontology. 41 | ![t4fs Ontology Model](t4fs-ontology-model.png) 42 | 43 | ## Versions 44 | 45 | ### Stable release versions 46 | 47 | The latest version of the ontology can always be found at: 48 | 49 | http://purl.obolibrary.org/obo/t4fs.owl 50 | 51 | ### Alternative Artefacts 52 | 53 | In addition to the stable release version listed above, we have a variety of different ways in which you can view T4FS. All artefacts other than `community` are as defined https://github.com/INCATools/ontology-development-kit/blob/master/docs/ReleaseArtefacts.md: 54 | 55 | * base 56 | * simple 57 | * full 58 | * community: this is a version of t4fs without the upper-level BFO terms, giving our those in our community not familiar with ULOs a view that they are used to. 59 | 60 | ### Alternative formats 61 | 62 | We produce all ontology artefacts in the following formats: 63 | * OWL 64 | * OBO 65 | * JSON 66 | 67 | ### Editors' version 68 | 69 | T4FS uses templates to edit the ontology. This means that you should not edit any of the OWL files that you see in this repository. Instead, please see our [Contributing README](CONTRIBUTING.md) and our [Templates README](src/templates/README.md) for more details. 70 | 71 | ## Deprecation of terms 72 | 73 | Find out more about our [deprecation policy](src/ontology/DEPRECATION.md). 74 | 75 | ## Contact 76 | 77 | Please use this GitHub repository's [Issue tracker](https://github.com/terms4FAIRskills/FAIRterminology/issues) to request new terms/classes or report errors or specific concerns related to the ontology. 78 | 79 | ## Acknowledgements 80 | 81 | This ontology repository was created using the [Ontology Development Kit (ODK)](https://github.com/INCATools/ontology-development-kit). 82 | -------------------------------------------------------------------------------- /src/ontology/README-editors.md: -------------------------------------------------------------------------------- 1 | These notes are for the EDITORS of t4fs 2 | 3 | This project was created using the [ontology development kit](https://github.com/INCATools/ontology-development-kit). See the site for details. 4 | 5 | For more details on ontology management, please see the [OBO tutorial](https://github.com/jamesaoverton/obo-tutorial) or the [Gene Ontology Editors Tutorial](https://go-protege-tutorial.readthedocs.io/en/latest/) 6 | 7 | You may also want to read the [GO ontology editors guide](http://go-ontology.readthedocs.org/) 8 | 9 | ## Requirements 10 | 11 | 1. Protege (for editing) 12 | 2. A git client (we assume command line git) 13 | 3. [docker](https://www.docker.com/get-docker) (for managing releases) 14 | 15 | ## Editors Version 16 | 17 | Make sure you have an ID range in the [idranges file](t4fs-idranges.owl) 18 | 19 | If you do not have one, get one from the maintainer of this repo. 20 | 21 | The editors version is [t4fs-edit.owl](t4fs-edit.owl) 22 | 23 | ** DO NOT EDIT t4fs.obo OR t4fs.owl in the top level directory ** 24 | 25 | [../../t4fs.owl](../../t4fs.owl) is the release version 26 | 27 | **Edits to classes/properties the ontology are performed in Google spreadsheets, which are then downloaded and committed to this repository within src/templates. Please see [Templates README](../templates/README.md) for details of how to make these changes.** 28 | **Edits to the top-level annotation (e.g. title, description, authors) happen within `src/ontology/t4fs-edit.owl`. Open this file in your favourite editor, i.e. [Protege](https://protege.stanford.edu/). Careful: double check you are editing the correct file. There are many ontology files in this repository, but only one _editors file_!** 29 | 30 | To edit, open the file in Protege. First make sure you have the repository cloned, see [the GitHub project](https://github.com/terms4FAIRskills/FAIRterminology) for details. 31 | 32 | You should discuss the git workflow you should use with the maintainer 33 | of this repo, who should document it here. If you are the maintainer, 34 | you can contact the odk developers for assistance. You may want to 35 | copy the flow an existing project, for example GO: [Gene Ontology 36 | Editors Tutorial](https://go-protege-tutorial.readthedocs.io/en/latest/). 37 | 38 | In general, it is bad practice to commit changes to master. It is 39 | better to make changes on a branch, and make Pull Requests. 40 | 41 | ## ID Ranges 42 | 43 | These are stored in the file 44 | 45 | * [t4fs-idranges.owl](t4fs-idranges.owl) 46 | 47 | ** ONLY USE IDs WITHIN YOUR RANGE!! ** 48 | 49 | If you have only just set up this repository, modify the idranges file 50 | and add yourself or other editors. Note Protege does not read the file 51 | - it is up to you to ensure correct Protege configuration. 52 | 53 | 54 | ### Setting ID ranges in Protege 55 | 56 | We aim to put this up on the technical docs for OBO on http://obofoundry.org/ 57 | 58 | For now, consult the [GO Tutorial on configuring Protege](http://go-protege-tutorial.readthedocs.io/en/latest/Entities.html#new-entities) 59 | 60 | ## Imports 61 | 62 | All import modules are in the [imports/](imports/) folder. 63 | 64 | There are two ways to include new classes in an import module 65 | 66 | 1. Reference an external ontology class in the edit ontology. In Protege: "add new entity", then paste in the PURL 67 | 2. Add to the imports/ont_terms.txt file, for example imports/go_terms.txt 68 | 69 | After doing this, you can run 70 | 71 | `./run.sh make all_imports` 72 | 73 | to regenerate imports. 74 | 75 | Note: the ont_terms.txt file may include 'starter' classes seeded from 76 | the ontology starter kit. It is safe to remove these. 77 | 78 | ## Deprecation of terms 79 | 80 | Find out more about our [deprecation policy](DEPRECATION.md). 81 | 82 | ## Release Manager notes 83 | 84 | You should only attempt to make a release AFTER the edit version is 85 | committed and pushed, AND the travis build passes. 86 | 87 | These instructions assume you have 88 | [docker](https://www.docker.com/get-docker). This folder has a script 89 | [run.sh](run.sh) that wraps docker commands. 90 | 91 | if you wish to update the ODK first, as outlined [here](https://oboacademy.github.io/obook/howto/odk-update/) you need to run: 92 | 93 | docker pull obolibrary/odkfull 94 | 95 | If you have updated the ODK, then make sure you update in your branch too. It must successfully run twice before this step is complete. Change to this directory (src/ontology) and run: 96 | 97 | sh run.sh make update_repo 98 | sh run.sh make update_repo 99 | 100 | to release: 101 | 102 | first type 103 | 104 | git branch 105 | 106 | to make sure you are on master 107 | 108 | cd src/ontology 109 | sh run.sh make all 110 | 111 | If this looks good type: 112 | 113 | sh run.sh make prepare_release 114 | 115 | This generates derived files such as t4fs.owl and t4fs.obo and places 116 | them in the top level (../..). 117 | 118 | Note that the versionIRI value automatically will be added, and will 119 | end with YYYY-MM-DD, as per OBO guidelines. 120 | 121 | Commit and push these files. 122 | 123 | git commit -a 124 | 125 | And type a brief description of the release in the editor window 126 | 127 | Finally type: 128 | 129 | git push origin master 130 | 131 | IMMEDIATELY AFTERWARDS (do *not* make further modifications) go here: 132 | 133 | * https://github.com/terms4FAIRskills/FAIRterminology/releases 134 | * https://github.com/terms4FAIRskills/FAIRterminology/releases/new 135 | 136 | __IMPORTANT__: The value of the "Tag version" field MUST be 137 | 138 | vYYYY-MM-DD 139 | 140 | The initial lowercase "v" is REQUIRED. The YYYY-MM-DD *must* match 141 | what is in the `owl:versionIRI` of the derived t4fs.owl (`data-version` in 142 | t4fs.obo). This will be today's date. 143 | 144 | This cannot be changed after the fact, be sure to get this right! 145 | 146 | Release title should be YYYY-MM-DD, optionally followed by a title (e.g. "january release") 147 | 148 | You can also add release notes (this can also be done after the fact). These are in markdown format. 149 | In future we will have better tools for auto-generating release notes. 150 | 151 | Then click "publish release" 152 | 153 | __IMPORTANT__: NO MORE THAN ONE RELEASE PER DAY. 154 | 155 | The PURLs are already configured to pull from github. This means that 156 | BOTH ontology purls and versioned ontology purls will resolve to the 157 | correct ontologies. Try it! 158 | 159 | * http://purl.obolibrary.org/obo/t4fs.owl <-- current ontology PURL 160 | * http://purl.obolibrary.org/obo/t4fs/releases/YYYY-MM-DD.owl <-- change to the release you just made 161 | 162 | For questions on this contact Chris Mungall or email obo-admin AT obofoundry.org 163 | 164 | # Travis Continuous Integration System 165 | 166 | Check the build status here: [![Build Status](https://travis-ci.org/terms4FAIRskills/FAIRterminology.svg?branch=master)](https://travis-ci.org/terms4FAIRskills/FAIRterminology) 167 | 168 | Note: if you have only just created this project you will need to authorize travis for this repo. 169 | 170 | 1. Go to [https://travis-ci.org/profile/terms4FAIRskills](https://travis-ci.org/profile/terms4FAIRskills) 171 | 2. click the "Sync account" button 172 | 3. Click the tick symbol next to FAIRterminology 173 | 174 | Travis builds should now be activated 175 | -------------------------------------------------------------------------------- /src/templates/properties.tsv: -------------------------------------------------------------------------------- 1 | ID Label Type DOMAIN RANGE Inverse Property IAO:0000115 IAO:0000119 IAO:0000117 oboInOwl:created_by oboInOwl:creation_date rdfs:comment obo:IAO_0000233 2 | ID AL rdfs:label@en TYPE DOMAIN RANGE IP % AL definition@en >AL 'definition source'@en AL 'term editor'@en SPLIT=| AL 'created by'@en SPLIT=| A creation date AL rdfs:comment@en AL 'term tracker item'@en SPLIT=| 3 | obo:T4FS_0000564 alternative definition owl:AnnotationProperty Peter McQuilton 2019-10-17T13:38:16.742124Z 4 | obo:T4FS_0000565 alternative definition source owl:AnnotationProperty Peter McQuilton 2019-10-17T13:39:13.568975Z 5 | IAO:0000118 alternative term owl:AnnotationProperty An alternative name for a class or property which means the same thing as the preferred name (semantically equivalent) IAO 6 | obo:T4FS_0000575 competency gained through owl:ObjectProperty obo:T4FS_0000012 obo:T4FS_0000519 obo:T4FS_0000554 The learning media that creates a competence or capability. https://orcid.org/0000-0002-7702-4495 https://orcid.org/0000-0002-7702-4495 https://orcid.org/0000-0002-7702-4495 Allyson Lister 13.9.22: This class is created as the inverse of confers/requires competency about to allow consistent reasoning and access to the Data stewardship guidelines for Data stewardship activities. It needs to be revisited by the entire team to check the model. 7 | obo:T4FS_0000554 confers competency about owl:ObjectProperty obo:T4FS_0000519 obo:T4FS_0000012 Describes how a learning medium is intended to confer a competence or capability regarding a particular data stewardship activity, e.g. a presentation confering competency in metadata creation. https://orcid.org/0000-0002-7702-4495 https://orcid.org/0000-0002-7702-4495|Peter McQuilton Peter McQuilton 2020-10-01T21:36:11.080721Z 8 | obo:T4FS_0000581 confers compliance with owl:ObjectProperty obo:T4FS_0000580 obo:T4FS_0000446 Describes how an evaluation indicator may confer compliance with a particular guideline or set of guidelines https://orcid.org/0000-0002-7702-4495 https://orcid.org/0000-0002-7702-4495 https://github.com/terms4fairskills/FAIRterminology/issues/22 9 | obo:T4FS_0000555 confers knowledge about owl:ObjectProperty obo:T4FS_0000519 obo:T4FS_0000372 Describes how a learning medium is intended to confer knowledge of a particular data stewardship technical concept in order for that learning medium to perform its function, e.g. a presentation conferring competency in metadata. https://orcid.org/0000-0002-7702-4495 https://orcid.org/0000-0002-7702-4495|Peter McQuilton Peter McQuilton 2020-12-06 00:00:00 10 | obo:T4FS_0000557 confers practical skill about owl:ObjectProperty obo:T4FS_0000519 obo:T4FS_0000372 Describes how a learning medium confers practical skills regarding a particular data stewardship technical concept in order for that learning medium to perform its function e.g. a workshop conferring a practical skill in repository access. https://orcid.org/0000-0002-7702-4495 https://orcid.org/0000-0002-7702-4495|Peter McQuilton Peter McQuilton 2020-12-06 00:00:00 11 | obo:T4FS_0000563 contributes to the implementation of owl:ObjectProperty obo:T4FS_0000372 obo:T4FS_0000446 https://orcid.org/0000-0002-7702-4495|Peter McQuilton Peter McQuilton 2021-03-22T15:25:13.443153Z 12 | oboInOwl:created_by created by owl:AnnotationProperty 13 | oboInOwl:creation_date creation date owl:AnnotationProperty 14 | IAO:0000115 definition owl:AnnotationProperty The official definition, explaining the meaning of a class or property. Shall be Aristotelian, formalized and normalized. Can be augmented with colloquial definitions. IAO https://orcid.org/0000-0002-7702-4495 Allyson Lister 8.10.2019: Although the IAO definition has been included here, we have made a curation decision to allow non-Aristotelian definitions. 15 | IAO:0000119 definition source owl:AnnotationProperty Formal citation, e.g. identifier in external database to indicate / attribute source(s) for the definition. Free text indicate / attribute source(s) for the definition. EXAMPLE: Author Name, URI, MeSH Term C04, PUBMED ID, Wiki uri on 31.01.2007 IAO https://orcid.org/0000-0002-7702-4495|Peter McQuilton 16 | obo:T4FS_0000582 demonstrates how to fulfil the requirements for owl:ObjectProperty obo:T4FS_0000519 obo:T4FS_0000580 A learning medium may demonstrate how to meet the requirements for a particular evaluation indicator(s). https://orcid.org/0000-0002-7702-4495 https://orcid.org/0000-0002-7702-4495 https://github.com/terms4fairskills/FAIRterminology/issues/22 17 | obo:T4FS_0000562 has aptitude for owl:ObjectProperty BFO:0000023 obo:T4FS_0000548 https://orcid.org/0000-0002-7702-4495|Peter McQuilton Peter McQuilton 2021-03-24T15:33:43.476917Z 18 | obo:T4FS_0000558 has/wants competency in owl:ObjectProperty BFO:0000023 obo:T4FS_0000012 Describes how an expertise level or role (e.g. "data steward") is associated with a data stewardship activity (e.g. ‘workflow set-up and management’) to indicate whether someone has an awareness of the area, or an ability to do it, or expert knowledge of it. https://orcid.org/0000-0002-7702-4495 https://orcid.org/0000-0002-7702-4495|Peter McQuilton Definition added 8.2.22 19 | obo:T4FS_0000559 has/wants knowledge about owl:ObjectProperty BFO:0000023 (obo:T4FS_0000372 or obo:T4FS_0000446) https://orcid.org/0000-0002-7702-4495|Peter McQuilton 20 | obo:T4FS_0000561 has/wants practical skill about owl:ObjectProperty BFO:0000023 obo:T4FS_0000372 Desires/has a competence or capability acquired or applied in a specific context, e.g. producing a research output or deploying a service. A skill may be specified in a ‘skills user story’. A badge or certificate may provide evidence that a skill has been acquired, and a publication, personal profile, portfolio or CV may provide evidence that a skill has been applied. FAIR4S https://orcid.org/0000-0002-7702-4495|Peter McQuilton Peter McQuilton 21 | obo:T4FS_0000553 reference URL owl:DataProperty 22 | obo:T4FS_0000576 requires competency about owl:ObjectProperty obo:T4FS_0000519 obo:T4FS_0000012 Describes how a learning medium requires competency in a particular data stewardship activity in order for that learning medium to perform its function, e.g. a presentation requiring competency in metadata creation prior to engaging with that learning medium. https://orcid.org/0000-0002-7702-4495 23 | obo:T4FS_0000577 requires knowledge about owl:ObjectProperty obo:T4FS_0000519 obo:T4FS_0000372 Describes how a learning medium requires knowledge of a particular data stewardship technical concept in order for that learning medium to perform its function, e.g. a presentation requiring knowledge of metadata. https://orcid.org/0000-0002-7702-4495 24 | obo:T4FS_0000578 requires practical skill about owl:ObjectProperty obo:T4FS_0000519 obo:T4FS_0000372 Describes how a learning medium requires practical skills of a particular data stewardship technical concept in order for that learning medium to perform its function e.g. a workshop requiring a practical skill in repository access. https://orcid.org/0000-0002-7702-4495 25 | obo:T4FS_0000556 requires/improves personal attribute owl:ObjectProperty (obo:T4FS_0000012 or obo:T4FS_0000519) obo:T4FS_0000548 https://orcid.org/0000-0002-7702-4495 Peter McQuilton 26 | obo:T4FS_0000560 supports implementation of owl:ObjectProperty obo:T4FS_0000519 obo:T4FS_0000446 https://orcid.org/0000-0002-7702-4495 Peter McQuilton 27 | IAO:0000117 term editor owl:AnnotationProperty Name of editor entering the term in the file. The term editor is a point of contact for information regarding the term. The term editor may be, but is not always, the author of the definition, which may have been worked upon by several people IAO https://orcid.org/0000-0002-7702-4495|Peter McQuilton 28 | IAO:0000233 term tracker item owl:AnnotationProperty 29 | owl:versionInfo owl:AnnotationProperty 30 | rdfs:comment owl:AnnotationProperty 31 | rdfs:label owl:AnnotationProperty -------------------------------------------------------------------------------- /diff-with-previous-release.md: -------------------------------------------------------------------------------- 1 | # Ontology comparison 2 | 3 | ## Left 4 | - Ontology IRI: `http://purl.obolibrary.org/obo/t4fs.owl` 5 | - Version IRI: `http://purl.obolibrary.org/obo/t4fs/releases/2022-12-05/t4fs.owl` 6 | - Loaded from: `file:/home/allyson/github/FAIRterminology/t4fs-original.owl` 7 | 8 | ## Right 9 | - Ontology IRI: `http://purl.obolibrary.org/obo/t4fs.owl` 10 | - Version IRI: `http://purl.obolibrary.org/obo/t4fs/releases/2023-03-02/t4fs.owl` 11 | - Loaded from: `file:/home/allyson/github/FAIRterminology/t4fs.owl` 12 | 13 | ### Ontology imports 14 | 15 | 16 | 17 | ### Ontology annotations 18 | #### Removed 19 | - [versionInfo](http://www.w3.org/2002/07/owl#versionInfo) "2022-12-05"^^[string](http://www.w3.org/2001/XMLSchema#string) 20 | 21 | #### Added 22 | - [versionInfo](http://www.w3.org/2002/07/owl#versionInfo) "2023-03-02" 23 | 24 | 25 | ### DSM-1-C0 `http://purl.obolibrary.org/obo/T4FS_0000617` 26 | 27 | #### Added 28 | - [DSM-1-C0](http://purl.obolibrary.org/obo/T4FS_0000617) SubClassOf [confers compliance with](http://purl.obolibrary.org/obo/T4FS_0000581) some [F1. (meta)data are assigned a globally unique and persistent identifier](http://purl.obolibrary.org/obo/T4FS_0000512) 29 | 30 | 31 | ### DSM-1-C1 `http://purl.obolibrary.org/obo/T4FS_0000630` 32 | 33 | #### Added 34 | - [DSM-1-C1](http://purl.obolibrary.org/obo/T4FS_0000630) SubClassOf [confers compliance with](http://purl.obolibrary.org/obo/T4FS_0000581) some [R1. (meta)data are richly described with a plurality of accurate and relevant attributes](http://purl.obolibrary.org/obo/T4FS_0000174) 35 | 36 | - [DSM-1-C1](http://purl.obolibrary.org/obo/T4FS_0000630) SubClassOf [confers compliance with](http://purl.obolibrary.org/obo/T4FS_0000581) some [F2. data are described with rich metadata](http://purl.obolibrary.org/obo/T4FS_0000199) 37 | 38 | 39 | ### DSM-1-C2 `http://purl.obolibrary.org/obo/T4FS_0000635` 40 | 41 | #### Added 42 | - [DSM-1-C2](http://purl.obolibrary.org/obo/T4FS_0000635) SubClassOf [confers compliance with](http://purl.obolibrary.org/obo/T4FS_0000581) some [F3. metadata clearly and explicitly include the identifier of the data they describe](http://purl.obolibrary.org/obo/T4FS_0000435) 43 | 44 | - [DSM-1-C2](http://purl.obolibrary.org/obo/T4FS_0000635) SubClassOf [confers compliance with](http://purl.obolibrary.org/obo/T4FS_0000581) some [R1. (meta)data are richly described with a plurality of accurate and relevant attributes](http://purl.obolibrary.org/obo/T4FS_0000174) 45 | 46 | 47 | ### DSM-1-C3 `http://purl.obolibrary.org/obo/T4FS_0000636` 48 | 49 | #### Added 50 | - [DSM-1-C3](http://purl.obolibrary.org/obo/T4FS_0000636) SubClassOf [confers compliance with](http://purl.obolibrary.org/obo/T4FS_0000581) some [A1. (meta)data are retrievable by their identifier using a standardised communications protocol](http://purl.obolibrary.org/obo/T4FS_0000038) 51 | 52 | 53 | ### DSM-1-H1 `http://purl.obolibrary.org/obo/T4FS_0000645` 54 | 55 | #### Added 56 | - [DSM-1-H1](http://purl.obolibrary.org/obo/T4FS_0000645) SubClassOf [confers compliance with](http://purl.obolibrary.org/obo/T4FS_0000581) some [F3. metadata clearly and explicitly include the identifier of the data they describe](http://purl.obolibrary.org/obo/T4FS_0000435) 57 | 58 | - [DSM-1-H1](http://purl.obolibrary.org/obo/T4FS_0000645) SubClassOf [confers compliance with](http://purl.obolibrary.org/obo/T4FS_0000581) some [A1. (meta)data are retrievable by their identifier using a standardised communications protocol](http://purl.obolibrary.org/obo/T4FS_0000038) 59 | 60 | 61 | ### DSM-1-H2 `http://purl.obolibrary.org/obo/T4FS_0000650` 62 | 63 | #### Added 64 | - [DSM-1-H2](http://purl.obolibrary.org/obo/T4FS_0000650) SubClassOf [confers compliance with](http://purl.obolibrary.org/obo/T4FS_0000581) some [A1. (meta)data are retrievable by their identifier using a standardised communications protocol](http://purl.obolibrary.org/obo/T4FS_0000038) 65 | 66 | 67 | ### DSM-1-H3 `http://purl.obolibrary.org/obo/T4FS_0000651` 68 | 69 | #### Added 70 | - [DSM-1-H3](http://purl.obolibrary.org/obo/T4FS_0000651) SubClassOf [confers compliance with](http://purl.obolibrary.org/obo/T4FS_0000581) some [A1.1 the protocol is open, free, and universally implementable](http://purl.obolibrary.org/obo/T4FS_0000103) 71 | 72 | 73 | ### DSM-1-H4 `http://purl.obolibrary.org/obo/T4FS_0000657` 74 | 75 | #### Added 76 | - [DSM-1-H4](http://purl.obolibrary.org/obo/T4FS_0000657) SubClassOf [confers compliance with](http://purl.obolibrary.org/obo/T4FS_0000581) some [F4. (meta)data are registered or indexed in a searchable resource](http://purl.obolibrary.org/obo/T4FS_0000393) 77 | 78 | 79 | ### DSM-2-C1 `http://purl.obolibrary.org/obo/T4FS_0000631` 80 | 81 | #### Added 82 | - [DSM-2-C1](http://purl.obolibrary.org/obo/T4FS_0000631) SubClassOf [confers compliance with](http://purl.obolibrary.org/obo/T4FS_0000581) some [R1. (meta)data are richly described with a plurality of accurate and relevant attributes](http://purl.obolibrary.org/obo/T4FS_0000174) 83 | 84 | 85 | ### DSM-2-C2 `http://purl.obolibrary.org/obo/T4FS_0000618` 86 | 87 | #### Added 88 | - [DSM-2-C2](http://purl.obolibrary.org/obo/T4FS_0000618) SubClassOf [confers compliance with](http://purl.obolibrary.org/obo/T4FS_0000581) some [R1. (meta)data are richly described with a plurality of accurate and relevant attributes](http://purl.obolibrary.org/obo/T4FS_0000174) 89 | 90 | 91 | ### DSM-2-C3 `http://purl.obolibrary.org/obo/T4FS_0000621` 92 | 93 | #### Added 94 | - [DSM-2-C3](http://purl.obolibrary.org/obo/T4FS_0000621) SubClassOf [confers compliance with](http://purl.obolibrary.org/obo/T4FS_0000581) some [I3. (meta)data include qualified references to other (meta)data](http://purl.obolibrary.org/obo/T4FS_0000452) 95 | 96 | 97 | ### DSM-2-C4 `http://purl.obolibrary.org/obo/T4FS_0000625` 98 | 99 | #### Added 100 | - [DSM-2-C4](http://purl.obolibrary.org/obo/T4FS_0000625) SubClassOf [confers compliance with](http://purl.obolibrary.org/obo/T4FS_0000581) some [F2. data are described with rich metadata](http://purl.obolibrary.org/obo/T4FS_0000199) 101 | 102 | - [DSM-2-C4](http://purl.obolibrary.org/obo/T4FS_0000625) SubClassOf [confers compliance with](http://purl.obolibrary.org/obo/T4FS_0000581) some [R1. (meta)data are richly described with a plurality of accurate and relevant attributes](http://purl.obolibrary.org/obo/T4FS_0000174) 103 | 104 | 105 | ### DSM-2-C6 `http://purl.obolibrary.org/obo/T4FS_0000639` 106 | 107 | #### Added 108 | - [DSM-2-C6](http://purl.obolibrary.org/obo/T4FS_0000639) SubClassOf [confers compliance with](http://purl.obolibrary.org/obo/T4FS_0000581) some [R1. (meta)data are richly described with a plurality of accurate and relevant attributes](http://purl.obolibrary.org/obo/T4FS_0000174) 109 | 110 | - [DSM-2-C6](http://purl.obolibrary.org/obo/T4FS_0000639) SubClassOf [confers compliance with](http://purl.obolibrary.org/obo/T4FS_0000581) some [F2. data are described with rich metadata](http://purl.obolibrary.org/obo/T4FS_0000199) 111 | 112 | 113 | ### DSM-2-C7 `http://purl.obolibrary.org/obo/T4FS_0000642` 114 | 115 | #### Added 116 | - [DSM-2-C7](http://purl.obolibrary.org/obo/T4FS_0000642) SubClassOf [confers compliance with](http://purl.obolibrary.org/obo/T4FS_0000581) some [R1. (meta)data are richly described with a plurality of accurate and relevant attributes](http://purl.obolibrary.org/obo/T4FS_0000174) 117 | 118 | - [DSM-2-C7](http://purl.obolibrary.org/obo/T4FS_0000642) SubClassOf [confers compliance with](http://purl.obolibrary.org/obo/T4FS_0000581) some [F2. data are described with rich metadata](http://purl.obolibrary.org/obo/T4FS_0000199) 119 | 120 | 121 | ### DSM-2-H1 `http://purl.obolibrary.org/obo/T4FS_0000646` 122 | 123 | #### Added 124 | - [DSM-2-H1](http://purl.obolibrary.org/obo/T4FS_0000646) SubClassOf [confers compliance with](http://purl.obolibrary.org/obo/T4FS_0000581) some [R1. (meta)data are richly described with a plurality of accurate and relevant attributes](http://purl.obolibrary.org/obo/T4FS_0000174) 125 | 126 | 127 | ### DSM-2-H2 `http://purl.obolibrary.org/obo/T4FS_0000652` 128 | 129 | #### Added 130 | - [DSM-2-H2](http://purl.obolibrary.org/obo/T4FS_0000652) SubClassOf [confers compliance with](http://purl.obolibrary.org/obo/T4FS_0000581) some [A1. (meta)data are retrievable by their identifier using a standardised communications protocol](http://purl.obolibrary.org/obo/T4FS_0000038) 131 | 132 | 133 | ### DSM-2-H3 `http://purl.obolibrary.org/obo/T4FS_0000658` 134 | 135 | #### Added 136 | - [DSM-2-H3](http://purl.obolibrary.org/obo/T4FS_0000658) SubClassOf [confers compliance with](http://purl.obolibrary.org/obo/T4FS_0000581) some [F4. (meta)data are registered or indexed in a searchable resource](http://purl.obolibrary.org/obo/T4FS_0000393) 137 | 138 | 139 | ### DSM-3-C1 `http://purl.obolibrary.org/obo/T4FS_0000632` 140 | 141 | #### Added 142 | - [DSM-3-C1](http://purl.obolibrary.org/obo/T4FS_0000632) SubClassOf [confers compliance with](http://purl.obolibrary.org/obo/T4FS_0000581) some [R1.3 (meta)data meet domain-relevant community standards](http://purl.obolibrary.org/obo/T4FS_0000391) 143 | 144 | 145 | ### DSM-3-C2 `http://purl.obolibrary.org/obo/T4FS_0000619` 146 | 147 | #### Added 148 | - [DSM-3-C2](http://purl.obolibrary.org/obo/T4FS_0000619) SubClassOf [confers compliance with](http://purl.obolibrary.org/obo/T4FS_0000581) some [R1.3 (meta)data meet domain-relevant community standards](http://purl.obolibrary.org/obo/T4FS_0000391) 149 | 150 | 151 | ### DSM-3-C3 `http://purl.obolibrary.org/obo/T4FS_0000622` 152 | 153 | #### Added 154 | - [DSM-3-C3](http://purl.obolibrary.org/obo/T4FS_0000622) SubClassOf [confers compliance with](http://purl.obolibrary.org/obo/T4FS_0000581) some [I1. (meta)data use a formal, accessible, shared, and broadly applicable language for knowledge representation](http://purl.obolibrary.org/obo/T4FS_0000137) 155 | 156 | 157 | ### DSM-3-C4 `http://purl.obolibrary.org/obo/T4FS_0000626` 158 | 159 | #### Added 160 | - [DSM-3-C4](http://purl.obolibrary.org/obo/T4FS_0000626) SubClassOf [confers compliance with](http://purl.obolibrary.org/obo/T4FS_0000581) some [I2. (meta)data use vocabularies that follow fair principles](http://purl.obolibrary.org/obo/T4FS_0000361) 161 | 162 | - [DSM-3-C4](http://purl.obolibrary.org/obo/T4FS_0000626) SubClassOf [confers compliance with](http://purl.obolibrary.org/obo/T4FS_0000581) some [R1.3 (meta)data meet domain-relevant community standards](http://purl.obolibrary.org/obo/T4FS_0000391) 163 | 164 | 165 | ### DSM-3-C5 `http://purl.obolibrary.org/obo/T4FS_0000643` 166 | 167 | #### Added 168 | - [DSM-3-C5](http://purl.obolibrary.org/obo/T4FS_0000643) SubClassOf [confers compliance with](http://purl.obolibrary.org/obo/T4FS_0000581) some [A1. (meta)data are retrievable by their identifier using a standardised communications protocol](http://purl.obolibrary.org/obo/T4FS_0000038) 169 | 170 | - [DSM-3-C5](http://purl.obolibrary.org/obo/T4FS_0000643) SubClassOf [confers compliance with](http://purl.obolibrary.org/obo/T4FS_0000581) some [I2. (meta)data use vocabularies that follow fair principles](http://purl.obolibrary.org/obo/T4FS_0000361) 171 | 172 | - [DSM-3-C5](http://purl.obolibrary.org/obo/T4FS_0000643) SubClassOf [confers compliance with](http://purl.obolibrary.org/obo/T4FS_0000581) some [F2. data are described with rich metadata](http://purl.obolibrary.org/obo/T4FS_0000199) 173 | 174 | - [DSM-3-C5](http://purl.obolibrary.org/obo/T4FS_0000643) SubClassOf [confers compliance with](http://purl.obolibrary.org/obo/T4FS_0000581) some [F3. metadata clearly and explicitly include the identifier of the data they describe](http://purl.obolibrary.org/obo/T4FS_0000435) 175 | 176 | - [DSM-3-C5](http://purl.obolibrary.org/obo/T4FS_0000643) SubClassOf [confers compliance with](http://purl.obolibrary.org/obo/T4FS_0000581) some [I3. (meta)data include qualified references to other (meta)data](http://purl.obolibrary.org/obo/T4FS_0000452) 177 | 178 | 179 | ### DSM-3-C7 `http://purl.obolibrary.org/obo/T4FS_0000638` 180 | 181 | #### Added 182 | - [DSM-3-C7](http://purl.obolibrary.org/obo/T4FS_0000638) SubClassOf [confers compliance with](http://purl.obolibrary.org/obo/T4FS_0000581) some [F2. data are described with rich metadata](http://purl.obolibrary.org/obo/T4FS_0000199) 183 | 184 | 185 | ### DSM-3-H1 `http://purl.obolibrary.org/obo/T4FS_0000647` 186 | 187 | #### Added 188 | - [DSM-3-H1](http://purl.obolibrary.org/obo/T4FS_0000647) SubClassOf [confers compliance with](http://purl.obolibrary.org/obo/T4FS_0000581) some [R1.3 (meta)data meet domain-relevant community standards](http://purl.obolibrary.org/obo/T4FS_0000391) 189 | 190 | 191 | ### DSM-3-H2 `http://purl.obolibrary.org/obo/T4FS_0000653` 192 | 193 | #### Added 194 | - [DSM-3-H2](http://purl.obolibrary.org/obo/T4FS_0000653) SubClassOf [confers compliance with](http://purl.obolibrary.org/obo/T4FS_0000581) some [F1. (meta)data are assigned a globally unique and persistent identifier](http://purl.obolibrary.org/obo/T4FS_0000512) 195 | 196 | 197 | ### DSM-3-H3 `http://purl.obolibrary.org/obo/T4FS_0000659` 198 | 199 | #### Added 200 | - [DSM-3-H3](http://purl.obolibrary.org/obo/T4FS_0000659) SubClassOf [confers compliance with](http://purl.obolibrary.org/obo/T4FS_0000581) some [F1. (meta)data are assigned a globally unique and persistent identifier](http://purl.obolibrary.org/obo/T4FS_0000512) 201 | 202 | 203 | ### DSM-3-H4 `http://purl.obolibrary.org/obo/T4FS_0000654` 204 | 205 | #### Added 206 | - [DSM-3-H4](http://purl.obolibrary.org/obo/T4FS_0000654) SubClassOf [confers compliance with](http://purl.obolibrary.org/obo/T4FS_0000581) some [A1.2 the protocol allows for an authentication and authorisation procedure, where necessary](http://purl.obolibrary.org/obo/T4FS_0000371) 207 | 208 | 209 | ### DSM-3-R3 `http://purl.obolibrary.org/obo/T4FS_0000597` 210 | 211 | #### Added 212 | - [DSM-3-R3](http://purl.obolibrary.org/obo/T4FS_0000597) SubClassOf [confers compliance with](http://purl.obolibrary.org/obo/T4FS_0000581) some [R1.3 (meta)data meet domain-relevant community standards](http://purl.obolibrary.org/obo/T4FS_0000391) 213 | 214 | 215 | ### DSM-4-C1 `http://purl.obolibrary.org/obo/T4FS_0000633` 216 | 217 | #### Added 218 | - [DSM-4-C1](http://purl.obolibrary.org/obo/T4FS_0000633) SubClassOf [data stewardship technical concept](http://purl.obolibrary.org/obo/T4FS_0000372) 219 | 220 | - [DSM-4-C1](http://purl.obolibrary.org/obo/T4FS_0000633) SubClassOf [contributes to the implementation of](http://purl.obolibrary.org/obo/T4FS_0000563) some [I1. (meta)data use a formal, accessible, shared, and broadly applicable language for knowledge representation](http://purl.obolibrary.org/obo/T4FS_0000137) 221 | 222 | - [DSM-4-C1](http://purl.obolibrary.org/obo/T4FS_0000633) SubClassOf [confers compliance with](http://purl.obolibrary.org/obo/T4FS_0000581) some [F2. data are described with rich metadata](http://purl.obolibrary.org/obo/T4FS_0000199) 223 | 224 | 225 | ### DSM-4-C2 `http://purl.obolibrary.org/obo/T4FS_0000620` 226 | 227 | #### Added 228 | - [DSM-4-C2](http://purl.obolibrary.org/obo/T4FS_0000620) SubClassOf [confers compliance with](http://purl.obolibrary.org/obo/T4FS_0000581) some [I1. (meta)data use a formal, accessible, shared, and broadly applicable language for knowledge representation](http://purl.obolibrary.org/obo/T4FS_0000137) 229 | 230 | 231 | ### DSM-4-C4 `http://purl.obolibrary.org/obo/T4FS_0000627` 232 | 233 | #### Added 234 | - [DSM-4-C4](http://purl.obolibrary.org/obo/T4FS_0000627) SubClassOf [confers compliance with](http://purl.obolibrary.org/obo/T4FS_0000581) some [F3. metadata clearly and explicitly include the identifier of the data they describe](http://purl.obolibrary.org/obo/T4FS_0000435) 235 | 236 | 237 | ### DSM-4-C5 `http://purl.obolibrary.org/obo/T4FS_0000641` 238 | 239 | #### Added 240 | - [DSM-4-C5](http://purl.obolibrary.org/obo/T4FS_0000641) SubClassOf [confers compliance with](http://purl.obolibrary.org/obo/T4FS_0000581) some [F2. data are described with rich metadata](http://purl.obolibrary.org/obo/T4FS_0000199) 241 | 242 | 243 | ### DSM-4-R3 `http://purl.obolibrary.org/obo/T4FS_0000598` 244 | 245 | #### Added 246 | - [DSM-4-R3](http://purl.obolibrary.org/obo/T4FS_0000598) SubClassOf [confers compliance with](http://purl.obolibrary.org/obo/T4FS_0000581) some [I1. (meta)data use a formal, accessible, shared, and broadly applicable language for knowledge representation](http://purl.obolibrary.org/obo/T4FS_0000137) 247 | 248 | 249 | ### DSM-4-R6 `http://purl.obolibrary.org/obo/T4FS_0000615` 250 | 251 | #### Added 252 | - [DSM-4-R6](http://purl.obolibrary.org/obo/T4FS_0000615) SubClassOf [confers compliance with](http://purl.obolibrary.org/obo/T4FS_0000581) some [R1.1 (meta)data are released with a clear and accessible data usage license](http://purl.obolibrary.org/obo/T4FS_0000200) 253 | 254 | 255 | ### Obsolete Class `http://www.geneontology.org/formats/oboInOwl#ObsoleteClass` 256 | 257 | #### Added 258 | - [Obsolete Class](http://www.geneontology.org/formats/oboInOwl#ObsoleteClass) [label](http://www.w3.org/2000/01/rdf-schema#label) "Obsolete Class"@en 259 | 260 | - Class: [Obsolete Class](http://www.geneontology.org/formats/oboInOwl#ObsoleteClass) 261 | 262 | - [Obsolete Class](http://www.geneontology.org/formats/oboInOwl#ObsoleteClass) SubClassOf [Thing](http://www.w3.org/2002/07/owl#Thing) 263 | 264 | 265 | ### contributor `http://purl.org/dc/elements/1.1/contributor` 266 | 267 | #### Added 268 | - AnnotationProperty: [contributor](http://purl.org/dc/elements/1.1/contributor) 269 | 270 | 271 | ### data harmonization `http://purl.obolibrary.org/obo/T4FS_0000375` 272 | #### Removed 273 | - [data harmonization](http://purl.obolibrary.org/obo/T4FS_0000375) [definition](http://purl.obolibrary.org/obo/IAO_0000115) "In the context of epidemiology: Making data from different sources comparable. The processes involved in producing inferentially equivalent data."@en 274 | - [definition source](http://purl.obolibrary.org/obo/IAO_0000119) "CASRAI. https://casrai.org/term/data-harmonization/"@en 275 | 276 | #### Added 277 | - [data harmonization](http://purl.obolibrary.org/obo/T4FS_0000375) [term tracker item](http://purl.obolibrary.org/obo/IAO_0000233) "https://github.com/terms4fairskills/FAIRterminology/issues/17"@en 278 | 279 | - [data harmonization](http://purl.obolibrary.org/obo/T4FS_0000375) [term editor](http://purl.obolibrary.org/obo/IAO_0000117) "https://orcid.org/0000-0002-7702-4495"@en 280 | 281 | - [data harmonization](http://purl.obolibrary.org/obo/T4FS_0000375) [definition](http://purl.obolibrary.org/obo/IAO_0000115) "Data harmonization is the process of making data from different sources comparable."@en 282 | - [definition source](http://purl.obolibrary.org/obo/IAO_0000119) "Modified from CASRAI. https://casrai.org/term/data-harmonization/"@en 283 | 284 | 285 | ### defaultLanguage `http://protege.stanford.edu/plugins/owl/protege#defaultLanguage` 286 | 287 | #### Added 288 | - AnnotationProperty: [defaultLanguage](http://protege.stanford.edu/plugins/owl/protege#defaultLanguage) 289 | 290 | 291 | ### description `http://purl.org/dc/elements/1.1/description` 292 | 293 | #### Added 294 | - AnnotationProperty: [description](http://purl.org/dc/elements/1.1/description) 295 | 296 | 297 | ### descriptive metadata `http://purl.obolibrary.org/obo/T4FS_0000531` 298 | #### Removed 299 | - [descriptive metadata](http://purl.obolibrary.org/obo/T4FS_0000531) SubClassOf [interoperability](http://purl.obolibrary.org/obo/T4FS_0000020) 300 | 301 | #### Added 302 | - [descriptive metadata](http://purl.obolibrary.org/obo/T4FS_0000531) [term tracker item](http://purl.obolibrary.org/obo/IAO_0000233) "https://github.com/terms4fairskills/FAIRterminology/issues/13"@en 303 | 304 | - [descriptive metadata](http://purl.obolibrary.org/obo/T4FS_0000531) [term editor](http://purl.obolibrary.org/obo/IAO_0000117) "https://orcid.org/0000-0002-7702-4495"@en 305 | 306 | - [descriptive metadata](http://purl.obolibrary.org/obo/T4FS_0000531) SubClassOf [metadata](http://purl.obolibrary.org/obo/T4FS_0000527) 307 | 308 | 309 | ### homepage `http://xmlns.com/foaf/0.1/homepage` 310 | 311 | #### Added 312 | - AnnotationProperty: [homepage](http://xmlns.com/foaf/0.1/homepage) 313 | 314 | 315 | ### machine readable `http://purl.obolibrary.org/obo/T4FS_0000256` 316 | 317 | #### Added 318 | - [machine readable](http://purl.obolibrary.org/obo/T4FS_0000256) SubClassOf [Obsolete Class](http://www.geneontology.org/formats/oboInOwl#ObsoleteClass) 319 | 320 | 321 | ### mbox `http://xmlns.com/foaf/0.1/mbox` 322 | 323 | #### Added 324 | - AnnotationProperty: [mbox](http://xmlns.com/foaf/0.1/mbox) 325 | 326 | 327 | ### re-use `http://purl.obolibrary.org/obo/T4FS_0000121` 328 | #### Removed 329 | - [re-use](http://purl.obolibrary.org/obo/T4FS_0000121) [definition](http://purl.obolibrary.org/obo/IAO_0000115) "Use of content outside of its original intention."@en 330 | - [definition source](http://purl.obolibrary.org/obo/IAO_0000119) "CASRAI. https://casrai.org/term/re-use"@en 331 | 332 | - [re-use](http://purl.obolibrary.org/obo/T4FS_0000121) SubClassOf [reuse of digital assets](http://purl.obolibrary.org/obo/T4FS_0000170) 333 | 334 | #### Added 335 | - [re-use](http://purl.obolibrary.org/obo/T4FS_0000121) [comment](http://www.w3.org/2000/01/rdf-schema#comment) "AL 2.3.23: Removed because of its high level of similarity with the 'R' FAIR principle."@en 336 | 337 | - [re-use](http://purl.obolibrary.org/obo/T4FS_0000121) [definition](http://purl.obolibrary.org/obo/IAO_0000115) "OBSOLETE. Use of content outside of its original intention."@en 338 | - [definition source](http://purl.obolibrary.org/obo/IAO_0000119) "CASRAI. https://casrai.org/term/re-use"@en 339 | 340 | - [re-use](http://purl.obolibrary.org/obo/T4FS_0000121) [term tracker item](http://purl.obolibrary.org/obo/IAO_0000233) "https://github.com/terms4fairskills/FAIRterminology/issues/15"@en 341 | 342 | - [re-use](http://purl.obolibrary.org/obo/T4FS_0000121) [deprecated](http://www.w3.org/2002/07/owl#deprecated) true 343 | 344 | - [re-use](http://purl.obolibrary.org/obo/T4FS_0000121) SubClassOf [Obsolete Class](http://www.geneontology.org/formats/oboInOwl#ObsoleteClass) 345 | 346 | 347 | ### title `http://purl.org/dc/elements/1.1/title` 348 | 349 | #### Added 350 | - AnnotationProperty: [title](http://purl.org/dc/elements/1.1/title) 351 | 352 | 353 | ### use of persistent, resolvable identifiers (pids) `http://purl.obolibrary.org/obo/T4FS_0000093` 354 | 355 | #### Added 356 | - [use of persistent, resolvable identifiers (pids)](http://purl.obolibrary.org/obo/T4FS_0000093) SubClassOf [Obsolete Class](http://www.geneontology.org/formats/oboInOwl#ObsoleteClass) 357 | -------------------------------------------------------------------------------- /src/ontology/annotations.owl: -------------------------------------------------------------------------------- 1 | 2 | 11 | 12 | 13 | 14 | 15 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | The official definition, explaining the meaning of a class or property. Shall be Aristotelian, formalized and normalized. Can be augmented with colloquial definitions. 30 | Allyson Lister 31 | Allyson Lister 8.10.2019: Although the IAO definition has been included here, we have made a curation decision to allow non-Aristotelian definitions. 32 | definition 33 | 34 | 35 | 36 | 37 | The official definition, explaining the meaning of a class or property. Shall be Aristotelian, formalized and normalized. Can be augmented with colloquial definitions. 38 | IAO 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | Name of editor entering the term in the file. The term editor is a point of contact for information regarding the term. The term editor may be, but is not always, the author of the definition, which may have been worked upon by several people 47 | Allyson Lister 48 | Peter McQuilton 49 | term editor 50 | 51 | 52 | 53 | 54 | Name of editor entering the term in the file. The term editor is a point of contact for information regarding the term. The term editor may be, but is not always, the author of the definition, which may have been worked upon by several people 55 | IAO 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | An alternative name for a class or property which means the same thing as the preferred name (semantically equivalent) 64 | alternative term 65 | 66 | 67 | 68 | 69 | An alternative name for a class or property which means the same thing as the preferred name (semantically equivalent) 70 | IAO 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | Formal citation, e.g. identifier in external database to indicate / attribute source(s) for the definition. Free text indicate / attribute source(s) for the definition. EXAMPLE: Author Name, URI, MeSH Term C04, PUBMED ID, Wiki uri on 31.01.2007 79 | Allyson Lister 80 | Peter McQuilton 81 | definition source 82 | 83 | 84 | 85 | 86 | Formal citation, e.g. identifier in external database to indicate / attribute source(s) for the definition. Free text indicate / attribute source(s) for the definition. EXAMPLE: Author Name, URI, MeSH Term C04, PUBMED ID, Wiki uri on 31.01.2007 87 | IAO 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | Peter McQuilton 96 | 2019-10-17T13:38:16.742124Z 97 | alternative definition 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | Peter McQuilton 106 | 2019-10-17T13:39:13.568975Z 107 | alternative definition source 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | created by 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | creation date 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | Confers a competence or capability acquired or applied in a specific context, e.g. producing a research output or deploying a service. A skill may be specified in a ‘skills user story’. A badge or certificate may provide evidence that a skill has been acquired, and a publication, personal profile, portfolio or CV may provide evidence that a skill has been applied. 163 | Allyson Lister 164 | Peter McQuilton 165 | Peter McQuilton 166 | 2020-10-01T21:36:11.080721Z 167 | confers/requires competency about 168 | 169 | 170 | 171 | 172 | Confers a competence or capability acquired or applied in a specific context, e.g. producing a research output or deploying a service. A skill may be specified in a ‘skills user story’. A badge or certificate may provide evidence that a skill has been acquired, and a publication, personal profile, portfolio or CV may provide evidence that a skill has been applied. 173 | PMQ 3.2022 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | Allyson Lister 184 | Peter McQuilton 185 | Peter McQuilton 186 | 2020-12-06 00:00:00 187 | confers/requires knowledge about 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | Allyson Lister 198 | Peter McQuilton 199 | requires/improves personal attribute 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | A competence or capability acquired or applied in a specific context, e.g. producing a research output or deploying a service. A skill may be specified in a ‘skills user story’. A badge or certificate may provide evidence that a skill has been acquired, and a publication, personal profile, portfolio or CV may provide evidence that a skill has been applied. 210 | Allyson Lister 211 | Peter McQuilton 212 | Peter McQuilton 213 | 2020-12-06 00:00:00 214 | confers/requires practical skill about 215 | 216 | 217 | 218 | 219 | A competence or capability acquired or applied in a specific context, e.g. producing a research output or deploying a service. A skill may be specified in a ‘skills user story’. A badge or certificate may provide evidence that a skill has been acquired, and a publication, personal profile, portfolio or CV may provide evidence that a skill has been applied. 220 | FAIR4S 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | Describes how an expertise level or role (e.g. "data steward") is associated with a data stewardship activity (e.g. ‘workflow set-up and management’) to indicate whether someone has an awareness of the area, or an ability to do it, or expert knowledge of it. 231 | Allyson Lister 232 | Peter McQuilton 233 | has/wants competency in 234 | 235 | 236 | 237 | 238 | Describes how an expertise level or role (e.g. "data steward") is associated with a data stewardship activity (e.g. ‘workflow set-up and management’) to indicate whether someone has an awareness of the area, or an ability to do it, or expert knowledge of it. 239 | Allyson Lister 8.2.22 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | Allyson Lister 250 | Peter McQuilton 251 | has/wants knowledge about 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | Allyson Lister 262 | Peter McQuilton 263 | supports implementation of 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | Desires/has a competence or capability acquired or applied in a specific context, e.g. producing a research output or deploying a service. A skill may be specified in a ‘skills user story’. A badge or certificate may provide evidence that a skill has been acquired, and a publication, personal profile, portfolio or CV may provide evidence that a skill has been applied. 274 | Allyson Lister 275 | Peter McQuilton 276 | Peter McQuilton 277 | has/wants practical skill about 278 | 279 | 280 | 281 | 282 | Desires/has a competence or capability acquired or applied in a specific context, e.g. producing a research output or deploying a service. A skill may be specified in a ‘skills user story’. A badge or certificate may provide evidence that a skill has been acquired, and a publication, personal profile, portfolio or CV may provide evidence that a skill has been applied. 283 | FAIR4S 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | Allyson Lister 294 | Peter McQuilton 295 | Peter McQuilton 296 | 2021-03-24T15:33:43.476917Z 297 | has aptitude for 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | Allyson Lister 308 | Peter McQuilton 309 | Peter McQuilton 310 | 2021-03-22T15:25:13.443153Z 311 | contributes to the implementation of 312 | 313 | 314 | 315 | 316 | 323 | 324 | 325 | 326 | 327 | 328 | 329 | 330 | reference URL 331 | 332 | 333 | 334 | 335 | 342 | 343 | 344 | 345 | 346 | 347 | 348 | 349 | 350 | 351 | 352 | 353 | 354 | 355 | 356 | 357 | 358 | 359 | 360 | 361 | 362 | 363 | 364 | 365 | 366 | 367 | b is an independent continuant = Def. b is a continuant which is such that there is no c and no t such that b s-depends_on c at t. (axiom label in BFO2 Reference: [017-002]) 368 | 369 | 370 | 371 | 372 | 373 | 374 | 375 | p is a process = Def. p is an occurrent that has temporal proper parts and for some time t, p s-depends_on some material entity at t. (axiom label in BFO2 Reference: [083-003]) 376 | 377 | 378 | 379 | 380 | 381 | 382 | 383 | 384 | 385 | 386 | 387 | 388 | 389 | b is a specifically dependent continuant = Def. b is a continuant & there is some independent continuant c which is not a spatial region and which is such that b s-depends_on c at every time t during the course of b’s existence. (axiom label in BFO2 Reference: [050-003]) 390 | 391 | 392 | 393 | 394 | 395 | 396 | 397 | 398 | 399 | 400 | 401 | 402 | 403 | b is a generically dependent continuant = Def. b is a continuant that g-depends_on one or more other entities. (axiom label in BFO2 Reference: [074-001]) 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | A generically dependent continuant that is about some thing. 412 | PERSON: Chris Stoeckert 413 | OBI_0000142 414 | 415 | 416 | 417 | 418 | 419 | 420 | 421 | 422 | 423 | 424 | 425 | 426 | 427 | 428 | 429 | 430 | 431 | 432 | 433 | 434 | 435 | 436 | 437 | 438 | 439 | 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 | 448 | 449 | 450 | 451 | -------------------------------------------------------------------------------- /src/templates/index.tsv: -------------------------------------------------------------------------------- 1 | ID Label 2 | ID AL rdfs:label@en 3 | BFO:0000001 entity 4 | BFO:0000002 continuant 5 | BFO:0000003 occurent 6 | BFO:0000004 independent continuant 7 | BFO:0000015 process 8 | BFO:0000017 realizable entity 9 | BFO:0000020 specifically dependent continuant 10 | BFO:0000023 role 11 | BFO:0000031 generically dependent continuant 12 | IAO:0000030 information content entity 13 | obo:T4FS_0000002 pipe separated values 14 | obo:T4FS_0000004 software preservation 15 | obo:T4FS_0000005 repository access 16 | obo:T4FS_0000006 develop fair and open research vision 17 | obo:T4FS_0000008 develop open research strategy and vision 18 | obo:T4FS_0000009 data management policy 19 | obo:T4FS_0000010 understand research code of conduct 20 | obo:T4FS_0000011 choosing the appropriate reporting guideline for your data 21 | obo:T4FS_0000012 data stewardship activity 22 | obo:T4FS_0000013 data munging 23 | obo:T4FS_0000014 interoperability of digital assets 24 | obo:T4FS_0000016 skills for resource management 25 | obo:T4FS_0000017 preservation 26 | obo:T4FS_0000018 data categorisation 27 | obo:T4FS_0000019 data registration 28 | obo:T4FS_0000020 interoperability 29 | obo:T4FS_0000021 exposing data 30 | obo:T4FS_0000023 aptitudes for workflow technologies management 31 | obo:T4FS_0000024 de facto standard 32 | obo:T4FS_0000025 data entity 33 | obo:T4FS_0000026 real-time data 34 | obo:T4FS_0000027 storage security risk assessment and mitigation 35 | obo:T4FS_0000028 remote access 36 | obo:T4FS_0000029 fair stewardship supervising 37 | obo:T4FS_0000030 skills related to high performance computing management 38 | obo:T4FS_0000031 fair metrics selection skills 39 | obo:T4FS_0000032 relational database 40 | obo:T4FS_0000033 non identifiable data 41 | obo:T4FS_0000034 database developer 42 | obo:T4FS_0000036 curation 43 | obo:T4FS_0000038 A1. (meta)data are retrievable by their identifier using a standardised communications protocol 44 | obo:T4FS_0000039 version control 45 | obo:T4FS_0000041 understanding fair and open research challenges in your organization 46 | obo:T4FS_0000042 ethical application of patents, licenses 47 | obo:T4FS_0000043 data access protocol 48 | obo:T4FS_0000044 data processing 49 | obo:T4FS_0000045 data organization 50 | obo:T4FS_0000046 data rescue 51 | obo:T4FS_0000047 understand societal impact of research 52 | obo:T4FS_0000048 searching via algorithms and software 53 | obo:T4FS_0000049 audit 54 | obo:T4FS_0000050 wiki site 55 | obo:T4FS_0000051 skills related to authorisation management 56 | obo:T4FS_0000053 storage management 57 | obo:T4FS_0000054 data warehouse 58 | obo:T4FS_0000055 data driven disaster 59 | obo:T4FS_0000056 data identifier 60 | obo:T4FS_0000057 data splitting 61 | obo:T4FS_0000058 manage access 62 | obo:T4FS_0000059 system metadata 63 | obo:T4FS_0000060 tactical/short-term planning 64 | obo:T4FS_0000061 electronic medical record 65 | obo:T4FS_0000062 aptitudes for provenance information management 66 | obo:T4FS_0000065 data modeling 67 | obo:T4FS_0000067 use of aggregator sites 68 | obo:T4FS_0000068 manage metadata catalog 69 | obo:T4FS_0000069 data transformation 70 | obo:T4FS_0000070 cataloguing 71 | obo:T4FS_0000071 design and apply processes for attribution 72 | obo:T4FS_0000072 dataset series 73 | obo:T4FS_0000073 data dictionary 74 | obo:T4FS_0000074 data selection 75 | obo:T4FS_0000075 apply data access policy 76 | obo:T4FS_0000076 data discovery 77 | obo:T4FS_0000078 documented data 78 | obo:T4FS_0000079 conducting operations 79 | obo:T4FS_0000080 dynamic data 80 | obo:T4FS_0000081 reference model 81 | obo:T4FS_0000082 online workbook 82 | obo:T4FS_0000084 engaging in open innovation beyond academia 83 | obo:T4FS_0000085 registered data 84 | obo:T4FS_0000086 integrity 85 | obo:T4FS_0000087 digital scholarship 86 | obo:T4FS_0000088 a knowledge for resource management 87 | obo:T4FS_0000089 aptitudes for resource management 88 | obo:T4FS_0000091 knowledge of storage management 89 | obo:T4FS_0000092 understand open access publishing 90 | obo:T4FS_0000093 use of persistent, resolvable identifiers (pids) 91 | obo:T4FS_0000094 record standardization 92 | obo:T4FS_0000095 online documentation 93 | obo:T4FS_0000096 metadata catalogue 94 | obo:T4FS_0000097 understand legal background of patents 95 | obo:T4FS_0000098 data file format 96 | obo:T4FS_0000100 data catalogue 97 | obo:T4FS_0000102 curation workflow 98 | obo:T4FS_0000103 A1.1 the protocol is open, free, and universally implementable 99 | obo:T4FS_0000104 preservation costs management 100 | obo:T4FS_0000105 project manager 101 | obo:T4FS_0000106 publish data 102 | obo:T4FS_0000107 information security 103 | obo:T4FS_0000108 data production 104 | obo:T4FS_0000109 raw data 105 | obo:T4FS_0000112 interface testing 106 | obo:T4FS_0000113 digital object 107 | obo:T4FS_0000114 digital materials 108 | obo:T4FS_0000116 define access policy 109 | obo:T4FS_0000117 skills related to provenance information management 110 | obo:T4FS_0000118 remote data access 111 | obo:T4FS_0000119 disambiguation 112 | obo:T4FS_0000120 data compliance 113 | obo:T4FS_0000121 re-use 114 | obo:T4FS_0000122 trainer/teacher 115 | obo:T4FS_0000123 aptitudes for identity management 116 | obo:T4FS_0000124 understand information security challenges 117 | obo:T4FS_0000125 aptitudes for authorisation management 118 | obo:T4FS_0000126 assessment 119 | obo:T4FS_0000127 personal information privacy 120 | obo:T4FS_0000129 ability to solve fair implementation problems collaboratively 121 | obo:T4FS_0000131 skills related to cloud computing environment management 122 | obo:T4FS_0000132 data curation 123 | obo:T4FS_0000133 cite contributions 124 | obo:T4FS_0000134 operational management 125 | obo:T4FS_0000135 high quality data 126 | obo:T4FS_0000136 how to make your data reuseable 127 | obo:T4FS_0000137 I1. (meta)data use a formal, accessible, shared, and broadly applicable language for knowledge representation 128 | obo:T4FS_0000138 schema 129 | obo:T4FS_0000139 pid service 130 | obo:T4FS_0000140 foundational interoperability 131 | obo:T4FS_0000141 data management 132 | obo:T4FS_0000142 authorisation management 133 | obo:T4FS_0000143 knowledge of authorisation management 134 | obo:T4FS_0000145 search repositories and knowledge-bases 135 | obo:T4FS_0000146 cloud ecosystem 136 | obo:T4FS_0000148 understand legal background of licensing 137 | obo:T4FS_0000149 archive 138 | obo:T4FS_0000150 trusted digital repository 139 | obo:T4FS_0000151 database administration 140 | obo:T4FS_0000152 knowledge of identity management 141 | obo:T4FS_0000153 quality assessment 142 | obo:T4FS_0000154 data structure 143 | obo:T4FS_0000155 information technology specialist 144 | obo:T4FS_0000156 archiving 145 | obo:T4FS_0000157 knowledge of preservation costs management 146 | obo:T4FS_0000158 user acceptance testing 147 | obo:T4FS_0000159 minimal metadata 148 | obo:T4FS_0000160 metadata exposure 149 | obo:T4FS_0000161 data destruction 150 | obo:T4FS_0000162 fair stewardship training 151 | obo:T4FS_0000165 creativity 152 | obo:T4FS_0000166 data table attribute 153 | obo:T4FS_0000168 consensus standard 154 | obo:T4FS_0000169 identity management 155 | obo:T4FS_0000170 reuse of digital assets 156 | obo:T4FS_0000172 investigate open innovation opportunities 157 | obo:T4FS_0000173 data recovery 158 | obo:T4FS_0000174 R1. (meta)data are richly described with a plurality of accurate and relevant attributes 159 | obo:T4FS_0000175 fair evaluation of repositories for data deposition 160 | obo:T4FS_0000176 regional standard 161 | obo:T4FS_0000177 workflow technologies management 162 | obo:T4FS_0000178 data steward 163 | obo:T4FS_0000180 skills related to preservation costs management 164 | obo:T4FS_0000181 repository certification schemes 165 | obo:T4FS_0000182 registry 166 | obo:T4FS_0000183 recognise and acknowledge contributions 167 | obo:T4FS_0000184 linked open data 168 | obo:T4FS_0000185 research data format 169 | obo:T4FS_0000186 research governance 170 | obo:T4FS_0000188 semantic interoperability 171 | obo:T4FS_0000189 international chemical identifier 172 | obo:T4FS_0000190 research data publication workflow 173 | obo:T4FS_0000191 data completeness 174 | obo:T4FS_0000192 privacy-preserving data linkage 175 | obo:T4FS_0000193 open access publishing 176 | obo:T4FS_0000194 self-archiving 177 | obo:T4FS_0000195 information management advisor 178 | obo:T4FS_0000196 data management plan 179 | obo:T4FS_0000199 F2. data are described with rich metadata 180 | obo:T4FS_0000200 R1.1 (meta)data are released with a clear and accessible data usage license 181 | obo:T4FS_0000201 data stream 182 | obo:T4FS_0000202 data librarian 183 | obo:T4FS_0000203 program governance 184 | obo:T4FS_0000206 knowledge of workflow technologies management 185 | obo:T4FS_0000209 access risk assessment and mitigation 186 | obo:T4FS_0000210 usable data 187 | obo:T4FS_0000211 presentation slides 188 | obo:T4FS_0000212 implement secure storage 189 | obo:T4FS_0000213 data lifecycle 190 | obo:T4FS_0000214 format and media migration 191 | obo:T4FS_0000215 data store 192 | obo:T4FS_0000216 design processes for research integrity 193 | obo:T4FS_0000217 core trust seal 194 | obo:T4FS_0000218 project management lifecycle 195 | obo:T4FS_0000219 authenticity metadata 196 | obo:T4FS_0000220 researcher 197 | obo:T4FS_0000221 skills related to service level management 198 | obo:T4FS_0000222 personally identifiable information 199 | obo:T4FS_0000223 understand storage security challanges 200 | obo:T4FS_0000224 normalization 201 | obo:T4FS_0000225 evaluation 202 | obo:T4FS_0000226 data item 203 | obo:T4FS_0000227 confidentiality 204 | obo:T4FS_0000228 knowledge of data management costs management 205 | obo:T4FS_0000229 logistical support 206 | obo:T4FS_0000230 aptitudes for data management costs management 207 | obo:T4FS_0000231 data acquisition 208 | obo:T4FS_0000232 data management costs management 209 | obo:T4FS_0000233 text file 210 | obo:T4FS_0000236 human-readable format 211 | obo:T4FS_0000238 data validation 212 | obo:T4FS_0000239 pid record 213 | obo:T4FS_0000240 appreciate importance of research integrity 214 | obo:T4FS_0000241 structural metadata 215 | obo:T4FS_0000244 non personally identifiable information 216 | obo:T4FS_0000245 digitisation 217 | obo:T4FS_0000247 data publication 218 | obo:T4FS_0000248 findability of digital assets 219 | obo:T4FS_0000249 community building 220 | obo:T4FS_0000250 citable data 221 | obo:T4FS_0000251 big data 222 | obo:T4FS_0000252 fairness assessment 223 | obo:T4FS_0000254 data archive 224 | obo:T4FS_0000255 technical metadata 225 | obo:T4FS_0000256 machine readable 226 | obo:T4FS_0000257 integrated access management 227 | obo:T4FS_0000258 noisy data 228 | obo:T4FS_0000259 fair training 229 | obo:T4FS_0000260 software 230 | obo:T4FS_0000263 data standardization 231 | obo:T4FS_0000264 open data 232 | obo:T4FS_0000265 curated data 233 | obo:T4FS_0000267 skills related to funding acquisition management 234 | obo:T4FS_0000268 universally unique identifier 235 | obo:T4FS_0000270 authentication 236 | obo:T4FS_0000271 cloud computing 237 | obo:T4FS_0000273 short-term preservation 238 | obo:T4FS_0000274 international standard 239 | obo:T4FS_0000275 conformance 240 | obo:T4FS_0000276 data custodian 241 | obo:T4FS_0000277 aptitudes for high performance computing management 242 | obo:T4FS_0000278 manage datasets in a repository 243 | obo:T4FS_0000280 data de-noising 244 | obo:T4FS_0000282 governance and accountability model 245 | obo:T4FS_0000283 access 246 | obo:T4FS_0000285 develop fair and open research strategy 247 | obo:T4FS_0000286 patent application 248 | obo:T4FS_0000287 collection management identification 249 | obo:T4FS_0000288 assess fairness 250 | obo:T4FS_0000289 knowledge of change management 251 | obo:T4FS_0000290 data ingestion 252 | obo:T4FS_0000291 data wrangling 253 | obo:T4FS_0000292 research data management infrastructure 254 | obo:T4FS_0000293 flexibility in relating fair criteria to openness 255 | obo:T4FS_0000294 choosing the appropriate terminology for your data 256 | obo:T4FS_0000295 structured data 257 | obo:T4FS_0000296 knowledge to contextualise fair principles to domain 258 | obo:T4FS_0000297 research data management 259 | obo:T4FS_0000298 publish output in a repository 260 | obo:T4FS_0000300 metadata search via metadata providers 261 | obo:T4FS_0000301 record provenance information 262 | obo:T4FS_0000302 data citation 263 | obo:T4FS_0000305 book 264 | obo:T4FS_0000306 intellectual leadership 265 | obo:T4FS_0000307 innovation 266 | obo:T4FS_0000308 high performance computing management 267 | obo:T4FS_0000309 provenance 268 | obo:T4FS_0000310 digital record 269 | obo:T4FS_0000311 analytical quality control 270 | obo:T4FS_0000312 digital research data 271 | obo:T4FS_0000314 managing research 272 | obo:T4FS_0000315 evaluation of how to publish your data 273 | obo:T4FS_0000316 accession number 274 | obo:T4FS_0000318 digital preservation 275 | obo:T4FS_0000320 project management activities 276 | obo:T4FS_0000321 knowledge of funding acquisition management 277 | obo:T4FS_0000322 manage access control 278 | obo:T4FS_0000323 project management 279 | obo:T4FS_0000324 data retention policy 280 | obo:T4FS_0000326 data representation 281 | obo:T4FS_0000327 metadata dataset 282 | obo:T4FS_0000328 long-term preservation 283 | obo:T4FS_0000329 research metadata format 284 | obo:T4FS_0000330 data residency 285 | obo:T4FS_0000331 information governance 286 | obo:T4FS_0000332 data element 287 | obo:T4FS_0000333 data policy 288 | obo:T4FS_0000334 legacy data 289 | obo:T4FS_0000335 controlled vocabulary 290 | obo:T4FS_0000336 data integrity 291 | obo:T4FS_0000337 pid attribute 292 | obo:T4FS_0000338 aptitudes for change management 293 | obo:T4FS_0000339 medium-term preservation 294 | obo:T4FS_0000340 project lifecycle 295 | obo:T4FS_0000341 knowledge to relate fair data assessment to research community norms 296 | obo:T4FS_0000342 data traceability 297 | obo:T4FS_0000343 maintaining persistent identifiers 298 | obo:T4FS_0000345 select and apply license 299 | obo:T4FS_0000346 relations 300 | obo:T4FS_0000347 dataset 301 | obo:T4FS_0000348 aptitudes for service level management 302 | obo:T4FS_0000350 extensible markup language 303 | obo:T4FS_0000351 skills related to change management 304 | obo:T4FS_0000352 data analysis 305 | obo:T4FS_0000353 resource management 306 | obo:T4FS_0000354 data exploration 307 | obo:T4FS_0000355 aptitudes for storage management 308 | obo:T4FS_0000356 advise and mentor 309 | obo:T4FS_0000357 skills related to workflow technologies management 310 | obo:T4FS_0000358 digital infrastructure 311 | obo:T4FS_0000359 skills related to data management cost management 312 | obo:T4FS_0000360 pid system 313 | obo:T4FS_0000361 I2. (meta)data use vocabularies that follow fair principles 314 | obo:T4FS_0000362 cross-disciplinary 315 | obo:T4FS_0000364 semantic data 316 | obo:T4FS_0000365 pid domain 317 | obo:T4FS_0000367 knowledge to choose fair data handling approaches appropriate to the research phenomena 318 | obo:T4FS_0000368 provenance information management 319 | obo:T4FS_0000370 reproducible research 320 | obo:T4FS_0000371 A1.2 the protocol allows for an authentication and authorisation procedure, where necessary 321 | obo:T4FS_0000372 data stewardship technical concept 322 | obo:T4FS_0000373 canonical data collection 323 | obo:T4FS_0000374 archival documentation of software 324 | obo:T4FS_0000375 data harmonization 325 | obo:T4FS_0000376 data mart 326 | obo:T4FS_0000377 access workflow 327 | obo:T4FS_0000378 knowledge of service level management 328 | obo:T4FS_0000379 data model 329 | obo:T4FS_0000380 appreciate security and usability trade-offs 330 | obo:T4FS_0000381 standard 331 | obo:T4FS_0000382 university teaching 332 | obo:T4FS_0000383 data migration 333 | obo:T4FS_0000384 data cleaning 334 | obo:T4FS_0000385 R1.2 (meta)data are associated with detailed provenance 335 | obo:T4FS_0000387 skills related to identity management 336 | obo:T4FS_0000388 using persistent identifiers 337 | obo:T4FS_0000389 data curator 338 | obo:T4FS_0000390 engage innovation partners 339 | obo:T4FS_0000391 R1.3 (meta)data meet domain-relevant community standards 340 | obo:T4FS_0000392 data reduction 341 | obo:T4FS_0000393 F4. (meta)data are registered or indexed in a searchable resource 342 | obo:T4FS_0000394 data type registry 343 | obo:T4FS_0000397 database 344 | obo:T4FS_0000398 appreciation of fair and open research 345 | obo:T4FS_0000399 ability to learn new techniques for fair implementation 346 | obo:T4FS_0000400 aptitudes for funding acquisition management 347 | obo:T4FS_0000401 choosing the appropriate model or format for your data 348 | obo:T4FS_0000402 provenance metadata 349 | obo:T4FS_0000404 data availability 350 | obo:T4FS_0000406 data review 351 | obo:T4FS_0000408 aptitudes associated with using fair tools and services 352 | obo:T4FS_0000410 preservation metadata 353 | obo:T4FS_0000411 change management 354 | obo:T4FS_0000413 original repository 355 | obo:T4FS_0000414 de-identification 356 | obo:T4FS_0000415 manager 357 | obo:T4FS_0000417 organizational leadership 358 | obo:T4FS_0000418 data dredging 359 | obo:T4FS_0000420 unstructured data 360 | obo:T4FS_0000421 presentation slides with interactive exercises 361 | obo:T4FS_0000422 creating persistent identifiers 362 | obo:T4FS_0000423 data linkage 363 | obo:T4FS_0000425 catalogue 364 | obo:T4FS_0000426 funding acquisition management 365 | obo:T4FS_0000427 machine access via api 366 | obo:T4FS_0000428 data structure continuum 367 | obo:T4FS_0000430 data 368 | obo:T4FS_0000431 semi-structured data 369 | obo:T4FS_0000432 book chapter 370 | obo:T4FS_0000433 research scientist 371 | obo:T4FS_0000434 digital object identifier 372 | obo:T4FS_0000435 F3. metadata clearly and explicitly include the identifier of the data they describe 373 | obo:T4FS_0000437 information management specialist 374 | obo:T4FS_0000438 A2. metadata are accessible, even when the data are no longer available 375 | obo:T4FS_0000439 stakeholder engagement on societal impact 376 | obo:T4FS_0000441 principal investigator 377 | obo:T4FS_0000442 program manager 378 | obo:T4FS_0000443 persistent uniform resource locator 379 | obo:T4FS_0000445 dublin core 380 | obo:T4FS_0000446 data stewardship guideline 381 | obo:T4FS_0000447 fair principle 382 | obo:T4FS_0000448 aptitudes for cloud computing environment management 383 | obo:T4FS_0000449 repurposed data 384 | obo:T4FS_0000450 document type definition 385 | obo:T4FS_0000452 I3. (meta)data include qualified references to other (meta)data 386 | obo:T4FS_0000453 persistent identifier 387 | obo:T4FS_0000454 scientist 388 | obo:T4FS_0000455 integration 389 | obo:T4FS_0000456 knowledge of high performance computing management 390 | obo:T4FS_0000457 fair mentoring 391 | obo:T4FS_0000458 data governance 392 | obo:T4FS_0000460 extensible resource identifier 393 | obo:T4FS_0000462 impact 394 | obo:T4FS_0000463 access control list 395 | obo:T4FS_0000464 understand data ownership and access policies 396 | obo:T4FS_0000465 meeting/conference organisation 397 | obo:T4FS_0000466 service level management 398 | obo:T4FS_0000467 national standard 399 | obo:T4FS_0000468 open government 400 | obo:T4FS_0000469 access control and management 401 | obo:T4FS_0000470 storage security management 402 | obo:T4FS_0000472 governance 403 | obo:T4FS_0000474 open archives initiative protocol for metadata harvesting 404 | obo:T4FS_0000475 computer code 405 | obo:T4FS_0000476 syntactic interoperability 406 | obo:T4FS_0000477 aptitudes for preservation costs management 407 | obo:T4FS_0000478 accessibility of digital assets 408 | obo:T4FS_0000479 cloud computing environment management 409 | obo:T4FS_0000480 corpus 410 | obo:T4FS_0000481 the use of fair and open research tools or services 411 | obo:T4FS_0000482 data sharing 412 | obo:T4FS_0000483 appreciate importance of crediting research contributions 413 | obo:T4FS_0000485 reference resolution 414 | obo:T4FS_0000486 research manager 415 | obo:T4FS_0000487 data integration 416 | obo:T4FS_0000488 standard operating procedure 417 | obo:T4FS_0000489 repository 418 | obo:T4FS_0000490 knowledge of theories underlying fair implementation 419 | obo:T4FS_0000491 document in lay terms 420 | obo:T4FS_0000492 understanding persistent identifiers 421 | obo:T4FS_0000493 data upload database 422 | obo:T4FS_0000494 uniform resource identifier 423 | obo:T4FS_0000495 how to find fair research data tools/services (catalogues) 424 | obo:T4FS_0000496 data reference model 425 | obo:T4FS_0000498 peer review 426 | obo:T4FS_0000499 knowledge of provenance information management 427 | obo:T4FS_0000500 record 428 | obo:T4FS_0000501 de-anonymization 429 | obo:T4FS_0000502 application of fair tools and services 430 | obo:T4FS_0000503 mandatory standard 431 | obo:T4FS_0000504 data driven decision management 432 | obo:T4FS_0000505 golden record 433 | obo:T4FS_0000507 data quality 434 | obo:T4FS_0000508 using fair and open research tools or services 435 | obo:T4FS_0000510 webinar 436 | obo:T4FS_0000511 digital data 437 | obo:T4FS_0000512 F1. (meta)data are assigned a globally unique and persistent identifier 438 | obo:T4FS_0000514 strategic/long-term planning 439 | obo:T4FS_0000515 data hygiene 440 | obo:T4FS_0000516 data profiling 441 | obo:T4FS_0000517 metadata record 442 | obo:T4FS_0000518 research data 443 | obo:T4FS_0000519 learning medium 444 | obo:T4FS_0000520 data manager 445 | obo:T4FS_0000521 electronic health record 446 | obo:T4FS_0000522 data scaling 447 | obo:T4FS_0000523 access controls 448 | obo:T4FS_0000524 privacy governance 449 | obo:T4FS_0000525 research integrity, attribution, impact awareness 450 | obo:T4FS_0000526 knowledge of cloud computing environment management 451 | obo:T4FS_0000527 metadata 452 | obo:T4FS_0000528 comma separated values 453 | obo:T4FS_0000529 identifier 454 | obo:T4FS_0000530 project team member 455 | obo:T4FS_0000531 descriptive metadata 456 | obo:T4FS_0000532 github repository 457 | obo:T4FS_0000533 data mining 458 | obo:T4FS_0000534 data archiving 459 | obo:T4FS_0000535 encoding schema 460 | obo:T4FS_0000537 digital archiving 461 | obo:T4FS_0000540 pid resolution 462 | obo:T4FS_0000541 skills related to storage management 463 | obo:T4FS_0000544 data repository management 464 | obo:T4FS_0000546 darwin information typing architecture 465 | obo:T4FS_0000547 analytics 466 | obo:T4FS_0000548 data stewardship soft skill 467 | obo:T4FS_0000550 archival documentation of data 468 | obo:T4FS_0000551 machine-readable format 469 | obo:T4FS_0000552 confidential information 470 | obo:TF4S_0000566 data scientist 471 | obo:TF4S_0000567 ontologist 472 | obo:TF4S_0000568 terminology manager 473 | obo:TF4S_0000569 software engineer 474 | obo:TF4S_0000570 system administrator 475 | obo:TF4S_0000572 procurement officer 476 | obo:TF4S_0000574 metadata creation 477 | obo:T4FS_0000579 fair cookbook recipe 478 | obo:T4FS_0000580 evaluation indicator 479 | obo:T4FS_0000583 fairplus dataset maturity model indicator 480 | obo:T4FS_0000584 fairplus DSM content-related indicator 481 | obo:T4FS_0000585 fairplus DSM representation and format indicator 482 | obo:T4FS_0000586 fairplus DSM hosting-environment capabilities indicator 483 | obo:T4FS_0000587 DSM-0-R2 484 | obo:T4FS_0000588 DSM-1-R2 485 | obo:T4FS_0000589 DSM-2-R2 486 | obo:T4FS_0000590 DSM-3-R2 487 | obo:T4FS_0000591 DSM-4-R2 488 | obo:T4FS_0000592 DSM-5-R2 489 | obo:T4FS_0000593 DSM-0-R3 490 | obo:T4FS_0000594 DSM-1-R0 491 | obo:T4FS_0000595 DSM-1-R3 492 | obo:T4FS_0000596 DSM-2-R3 493 | obo:T4FS_0000597 DSM-3-R3 494 | obo:T4FS_0000598 DSM-4-R3 495 | obo:T4FS_0000599 DSM-5-R3 496 | obo:T4FS_0000600 DSM-0-R1 497 | obo:T4FS_0000601 DSM-1-R1 498 | obo:T4FS_0000602 DSM-2-R1 499 | obo:T4FS_0000603 DSM-3-R1 500 | obo:T4FS_0000604 DSM-4-R1 501 | obo:T4FS_0000605 DSM-5-R1 502 | obo:T4FS_0000606 DSM-0-R4 503 | obo:T4FS_0000607 DSM-1-R4 504 | obo:T4FS_0000608 DSM-2-R4 505 | obo:T4FS_0000609 DSM-3-R4 506 | obo:T4FS_0000610 DSM-4-R4 507 | obo:T4FS_0000611 DSM-0-R5 508 | obo:T4FS_0000612 DSM-1-R5 509 | obo:T4FS_0000613 DSM-3-R5 510 | obo:T4FS_0000614 DSM-4-R5 511 | obo:T4FS_0000615 DSM-4-R6 512 | obo:T4FS_0000616 DSM-0-C0 513 | obo:T4FS_0000617 DSM-1-C0 514 | obo:T4FS_0000618 DSM-2-C2 515 | obo:T4FS_0000619 DSM-3-C2 516 | obo:T4FS_0000620 DSM-4-C2 517 | obo:T4FS_0000621 DSM-2-C3 518 | obo:T4FS_0000622 DSM-3-C3 519 | obo:T4FS_0000623 DSM-4-C3 520 | obo:T4FS_0000624 DSM-5-C3 521 | obo:T4FS_0000625 DSM-2-C4 522 | obo:T4FS_0000626 DSM-3-C4 523 | obo:T4FS_0000627 DSM-4-C4 524 | obo:T4FS_0000628 DSM-5-C4 525 | obo:T4FS_0000629 DSM-0-C1 526 | obo:T4FS_0000630 DSM-1-C1 527 | obo:T4FS_0000631 DSM-2-C1 528 | obo:T4FS_0000632 DSM-3-C1 529 | obo:T4FS_0000633 DSM-4-C1 530 | obo:T4FS_0000634 DSM-0-C2 531 | obo:T4FS_0000635 DSM-1-C2 532 | obo:T4FS_0000636 DSM-1-C3 533 | obo:T4FS_0000637 DSM-2-C5 534 | obo:T4FS_0000638 DSM-3-C7 535 | obo:T4FS_0000639 DSM-2-C6 536 | obo:T4FS_0000640 DSM-3-C6 537 | obo:T4FS_0000641 DSM-4-C5 538 | obo:T4FS_0000642 DSM-2-C7 539 | obo:T4FS_0000643 DSM-3-C5 540 | obo:T4FS_0000644 DSM-0-H1 541 | obo:T4FS_0000645 DSM-1-H1 542 | obo:T4FS_0000646 DSM-2-H1 543 | obo:T4FS_0000647 DSM-3-H1 544 | obo:T4FS_0000648 DSM-4-H1 545 | obo:T4FS_0000649 DSM-0-H2 546 | obo:T4FS_0000650 DSM-1-H2 547 | obo:T4FS_0000651 DSM-1-H3 548 | obo:T4FS_0000652 DSM-2-H2 549 | obo:T4FS_0000653 DSM-3-H2 550 | obo:T4FS_0000654 DSM-3-H4 551 | obo:T4FS_0000655 DSM-4-H2 552 | obo:T4FS_0000656 DSM-0-H3 553 | obo:T4FS_0000657 DSM-1-H4 554 | obo:T4FS_0000658 DSM-2-H3 555 | obo:T4FS_0000659 DSM-3-H3 556 | obo:T4FS_0000660 DSM-4-H2 -------------------------------------------------------------------------------- /src/ontology/Makefile: -------------------------------------------------------------------------------- 1 | # ---------------------------------------- 2 | # Makefile for t4fs 3 | # Generated using ontology-development-kit 4 | # ODK Version: v1.5.4 5 | # ---------------------------------------- 6 | # IMPORTANT: DO NOT EDIT THIS FILE. To override default make goals, use t4fs.Makefile instead 7 | 8 | 9 | # ---------------------------------------- 10 | # More information: https://github.com/INCATools/ontology-development-kit/ 11 | 12 | # Fingerprint of the configuration file when this Makefile was last generated 13 | CONFIG_HASH= a7cf97902578e8c8749919fc592906063e2faca46ed45231ebd6d7029b33a035 14 | 15 | 16 | # ---------------------------------------- 17 | # Standard Constants 18 | # ---------------------------------------- 19 | # these can be overwritten on the command line 20 | 21 | OBOBASE= http://purl.obolibrary.org/obo 22 | URIBASE= http://purl.obolibrary.org/obo 23 | ONT= t4fs 24 | ONTBASE= http://purl.obolibrary.org/obo/t4fs 25 | EDIT_FORMAT= owl 26 | SRC = $(ONT)-edit.$(EDIT_FORMAT) 27 | MAKE_FAST= $(MAKE) IMP=false PAT=false COMP=false MIR=false 28 | CATALOG= catalog-v001.xml 29 | ROBOT= robot --catalog $(CATALOG) 30 | 31 | OWLTOOLS= owltools --use-catalog 32 | RELEASEDIR= ../.. 33 | REPORTDIR= reports 34 | TEMPLATEDIR= ../templates 35 | TMPDIR= tmp 36 | MIRRORDIR= mirror 37 | IMPORTDIR= imports 38 | SUBSETDIR= subsets 39 | SCRIPTSDIR= ../scripts 40 | UPDATEREPODIR= target 41 | SPARQLDIR = ../sparql 42 | COMPONENTSDIR = components 43 | REPORT_FAIL_ON = None 44 | REPORT_LABEL = -l true 45 | REPORT_PROFILE_OPTS = 46 | OBO_FORMAT_OPTIONS = 47 | SPARQL_VALIDATION_CHECKS = owldef-self-reference iri-range label-with-iri multiple-replaced_by dc-properties 48 | SPARQL_EXPORTS = basic-report class-count-by-prefix edges xrefs obsoletes synonyms 49 | ODK_VERSION_MAKEFILE = v1.5.4 50 | 51 | TODAY ?= $(shell date +%Y-%m-%d) 52 | OBODATE ?= $(shell date +'%d:%m:%Y %H:%M') 53 | VERSION= $(TODAY) 54 | ANNOTATE_ONTOLOGY_VERSION = annotate -V $(ONTBASE)/releases/$(VERSION)/$@ --annotation owl:versionInfo $(VERSION) 55 | ANNOTATE_CONVERT_FILE = annotate --ontology-iri $(ONTBASE)/$@ $(ANNOTATE_ONTOLOGY_VERSION) convert -f ofn --output $@.tmp.owl && mv $@.tmp.owl $@ 56 | OTHER_SRC = $(COMPONENTSDIR)/t4fs-template.owl 57 | ONTOLOGYTERMS = $(TMPDIR)/ontologyterms.txt 58 | EDIT_PREPROCESSED = $(TMPDIR)/$(ONT)-preprocess.owl 59 | 60 | FORMATS = $(sort owl obo json owl) 61 | FORMATS_INCL_TSV = $(sort $(FORMATS) tsv) 62 | RELEASE_ARTEFACTS = $(sort $(ONT)-base $(ONT)-simple $(ONT)-full t4fs-community ) 63 | 64 | ifeq ($(ODK_DEBUG),yes) 65 | ODK_DEBUG_FILE = debug.log 66 | SHELL = $(SCRIPTSDIR)/run-command.sh 67 | endif 68 | 69 | # ---------------------------------------- 70 | # Top-level targets 71 | # ---------------------------------------- 72 | 73 | .PHONY: .FORCE 74 | 75 | .PHONY: all 76 | all: all_odk 77 | 78 | .PHONY: all_odk 79 | all_odk: odkversion config_check test custom_reports all_assets 80 | 81 | .PHONY: test 82 | test: odkversion reason_test sparql_test robot_reports $(REPORTDIR)/validate_profile_owl2dl_$(ONT).owl.txt 83 | echo "Finished running all tests successfully." 84 | 85 | .PHONY: test 86 | test_fast: 87 | $(MAKE_FAST) test 88 | 89 | .PHONY: release_diff 90 | release_diff: $(REPORTDIR)/release-diff.md 91 | 92 | .PHONY: reason_test 93 | reason_test: $(EDIT_PREPROCESSED) 94 | $(ROBOT) reason --input $< --reasoner ELK --equivalent-classes-allowed asserted-only \ 95 | --exclude-tautologies structural --output test.owl && rm test.owl 96 | 97 | .PHONY: odkversion 98 | odkversion: 99 | @echo "ODK Makefile $(ODK_VERSION_MAKEFILE)" 100 | @odk-info --tools 101 | .PHONY: config_check 102 | config_check: 103 | @if [ "$$(sha256sum $(ONT)-odk.yaml | cut -c1-64)" = "$(CONFIG_HASH)" ]; then \ 104 | echo "Repository is up-to-date." ; else \ 105 | echo "Your ODK configuration has changed since this Makefile was generated. You may need to run 'make update_repo'." ; fi 106 | 107 | 108 | $(TMPDIR) $(REPORTDIR) $(MIRRORDIR) $(IMPORTDIR) $(COMPONENTSDIR) $(SUBSETDIR): 109 | mkdir -p $@ 110 | 111 | # ---------------------------------------- 112 | # ODK-managed ROBOT plugins 113 | # ---------------------------------------- 114 | 115 | # Make sure ROBOT knows where to find plugins 116 | export ROBOT_PLUGINS_DIRECTORY=$(TMPDIR)/plugins 117 | 118 | # Override this rule in t4fs.Makefile to install custom plugins 119 | .PHONY: custom_robot_plugins 120 | custom_robot_plugins: 121 | 122 | 123 | .PHONY: extra_robot_plugins 124 | extra_robot_plugins: 125 | 126 | 127 | # Install all ROBOT plugins to the runtime plugins directory 128 | .PHONY: all_robot_plugins 129 | all_robot_plugins: $(foreach plugin,$(notdir $(wildcard /tools/robot-plugins/*.jar)),$(ROBOT_PLUGINS_DIRECTORY)/$(plugin)) \ 130 | $(foreach plugin,$(notdir $(wildcard ../../plugins/*.jar)),$(ROBOT_PLUGINS_DIRECTORY)/$(plugin)) \ 131 | custom_robot_plugins extra_robot_plugins \ 132 | 133 | # Default rule to install plugins 134 | $(ROBOT_PLUGINS_DIRECTORY)/%.jar: 135 | @mkdir -p $(ROBOT_PLUGINS_DIRECTORY) 136 | @if [ -f ../../plugins/$*.jar ]; then \ 137 | ln ../../plugins/$*.jar $@ ; \ 138 | elif [ -f /tools/robot-plugins/$*.jar ]; then \ 139 | cp /tools/robot-plugins/$*.jar $@ ; \ 140 | fi 141 | 142 | # Specific rules for supplementary plugins defined in configuration 143 | 144 | 145 | # ---------------------------------------- 146 | # Release assets 147 | # ---------------------------------------- 148 | 149 | MAIN_PRODUCTS = $(sort $(foreach r,$(RELEASE_ARTEFACTS), $(r)) $(ONT)) 150 | MAIN_GZIPPED = 151 | MAIN_FILES = $(foreach n,$(MAIN_PRODUCTS), $(foreach f,$(FORMATS), $(n).$(f))) $(MAIN_GZIPPED) 152 | SRCMERGED = $(TMPDIR)/merged-$(SRC) 153 | 154 | .PHONY: all_main 155 | all_main: $(MAIN_FILES) 156 | 157 | # ---------------------------------------- 158 | # Import assets 159 | # ---------------------------------------- 160 | 161 | 162 | IMPORTS = bfo iao 163 | 164 | IMPORT_ROOTS = $(patsubst %, $(IMPORTDIR)/%_import, $(IMPORTS)) 165 | IMPORT_OWL_FILES = $(foreach n,$(IMPORT_ROOTS), $(n).owl) 166 | IMPORT_FILES = $(IMPORT_OWL_FILES) 167 | 168 | 169 | .PHONY: all_imports 170 | all_imports: $(IMPORT_FILES) 171 | 172 | # ---------------------------------------- 173 | # Subset assets 174 | # ---------------------------------------- 175 | 176 | 177 | SUBSETS = 178 | 179 | SUBSET_ROOTS = $(patsubst %, $(SUBSETDIR)/%, $(SUBSETS)) 180 | SUBSET_FILES = $(foreach n,$(SUBSET_ROOTS), $(foreach f,$(FORMATS_INCL_TSV), $(n).$(f))) 181 | 182 | .PHONY: all_subsets 183 | all_subsets: $(SUBSET_FILES) 184 | 185 | # ---------------------------------------- 186 | # Mapping assets 187 | # ---------------------------------------- 188 | 189 | 190 | MAPPINGS = 191 | 192 | MAPPING_FILES = $(patsubst %, $(MAPPINGDIR)/%.sssom.tsv, $(MAPPINGS)) 193 | 194 | .PHONY: all_mappings 195 | all_mappings: $(MAPPING_FILES) 196 | 197 | 198 | # ---------------------------------------- 199 | # QC Reports & Utilities 200 | # ---------------------------------------- 201 | 202 | OBO_REPORT = $(SRC)-obo-report 203 | REPORTS = $(OBO_REPORT) 204 | REPORT_FILES = $(patsubst %, $(REPORTDIR)/%.tsv, $(REPORTS)) 205 | 206 | .PHONY: robot_reports 207 | robot_reports: $(REPORT_FILES) 208 | 209 | .PHONY: all_reports 210 | all_reports: custom_reports robot_reports 211 | 212 | # ---------------------------------------- 213 | # ROBOT OWL Profile checking 214 | # ---------------------------------------- 215 | 216 | # The merge step is necessary to avoid undeclared entity violations. 217 | $(REPORTDIR)/validate_profile_owl2dl_%.txt: % | $(REPORTDIR) $(TMPDIR) 218 | $(ROBOT) merge -i $< convert -f ofn -o $(TMPDIR)/validate.ofn 219 | $(ROBOT) validate-profile --profile DL -i $(TMPDIR)/validate.ofn -o $@ || { cat $@ && exit 1; } 220 | .PRECIOUS: $(REPORTDIR)/validate_profile_owl2dl_%.txt 221 | 222 | validate_profile_%: $(REPORTDIR)/validate_profile_owl2dl_%.txt 223 | echo "$* profile validation completed." 224 | 225 | # ---------------------------------------- 226 | # Sparql queries: Q/C 227 | # ---------------------------------------- 228 | 229 | # these live in the ../sparql directory, and have suffix -violation.sparql 230 | # adding the name here will make the violation check live. 231 | 232 | SPARQL_VALIDATION_QUERIES = $(foreach V,$(SPARQL_VALIDATION_CHECKS),$(SPARQLDIR)/$(V)-violation.sparql) 233 | 234 | sparql_test: $(EDIT_PREPROCESSED) | $(REPORTDIR) 235 | ifneq ($(SPARQL_VALIDATION_QUERIES),) 236 | 237 | $(ROBOT) verify -i $(EDIT_PREPROCESSED) --queries $(SPARQL_VALIDATION_QUERIES) -O $(REPORTDIR) 238 | endif 239 | 240 | # ---------------------------------------- 241 | # ROBOT report 242 | # ---------------------------------------- 243 | 244 | $(REPORTDIR)/$(SRC)-obo-report.tsv: $(SRCMERGED) | $(REPORTDIR) 245 | $(ROBOT) report -i $< $(REPORT_LABEL) $(REPORT_PROFILE_OPTS) --fail-on $(REPORT_FAIL_ON) --base-iri $(URIBASE)/T4FS_ --base-iri $(URIBASE)/t4fs --print 5 -o $@ 246 | 247 | $(REPORTDIR)/%-obo-report.tsv: % | $(REPORTDIR) 248 | $(ROBOT) report -i $< $(REPORT_LABEL) $(REPORT_PROFILE_OPTS) --fail-on $(REPORT_FAIL_ON) --base-iri $(URIBASE)/T4FS_ --base-iri $(URIBASE)/t4fs --print 5 -o $@ 249 | 250 | check_for_robot_updates: 251 | echo "You are not using a custom profile, so you are getting the joy of the latest ROBOT report!" 252 | 253 | 254 | # ---------------------------------------- 255 | # Release assets 256 | # ---------------------------------------- 257 | 258 | ASSETS = \ 259 | $(IMPORT_FILES) \ 260 | $(MAIN_FILES) \ 261 | $(REPORT_FILES) \ 262 | $(SUBSET_FILES) \ 263 | $(MAPPING_FILES) 264 | 265 | RELEASE_ASSETS = \ 266 | $(MAIN_FILES) \ 267 | $(SUBSET_FILES) 268 | 269 | .PHONY: all_assets 270 | all_assets: $(ASSETS) check_rdfxml_assets 271 | 272 | .PHONY: show_assets 273 | show_assets: 274 | echo $(ASSETS) 275 | du -sh $(ASSETS) 276 | 277 | check_rdfxml_%: % 278 | @check-rdfxml $< 279 | 280 | .PHONY: check_rdfxml_assets 281 | check_rdfxml_assets: $(foreach product,$(MAIN_PRODUCTS),check_rdfxml_$(product).owl) 282 | 283 | # ---------------------------------------- 284 | # Release Management 285 | # ---------------------------------------- 286 | 287 | CLEANFILES=$(MAIN_FILES) $(SRCMERGED) $(EDIT_PREPROCESSED) 288 | # This should be executed by the release manager whenever time comes to make a release. 289 | # It will ensure that all assets/files are fresh, and will copy to release folder 290 | 291 | .PHONY: prepare_release 292 | prepare_release: all_odk 293 | rsync -R $(RELEASE_ASSETS) $(RELEASEDIR) &&\ 294 | rm -f $(CLEANFILES) &&\ 295 | echo "Release files are now in $(RELEASEDIR) - now you should commit, push and make a release \ 296 | on your git hosting site such as GitHub or GitLab" 297 | 298 | .PHONY: prepare_initial_release 299 | prepare_initial_release: all_assets 300 | rsync -R $(RELEASE_ASSETS) $(RELEASEDIR) &&\ 301 | rm -f $(patsubst %, ./%, $(CLEANFILES)) &&\ 302 | cd $(RELEASEDIR) && git add $(RELEASE_ASSETS) 303 | 304 | .PHONY: prepare_release_fast 305 | prepare_release_fast: 306 | $(MAKE) prepare_release IMP=false PAT=false MIR=false COMP=false 307 | 308 | CURRENT_RELEASE=$(ONTBASE).owl 309 | 310 | $(TMPDIR)/current-release.owl: 311 | wget $(CURRENT_RELEASE) -O $@ 312 | 313 | $(REPORTDIR)/release-diff.md: $(ONT).owl $(TMPDIR)/current-release.owl 314 | $(ROBOT) diff --labels true --left $(TMPDIR)/current-release.owl --right $(ONT).owl -f markdown -o $@ 315 | 316 | # ------------------------ 317 | # Imports: Seeding system 318 | # ------------------------ 319 | 320 | # seed.txt contains all referenced entities 321 | IMPORTSEED=$(TMPDIR)/seed.txt 322 | PRESEED=$(TMPDIR)/pre_seed.txt 323 | 324 | $(SRCMERGED): $(EDIT_PREPROCESSED) $(OTHER_SRC) 325 | $(ROBOT) remove --input $< --select imports --trim false \ 326 | merge $(patsubst %, -i %, $(OTHER_SRC)) -o $@ 327 | 328 | $(EDIT_PREPROCESSED): $(SRC) 329 | $(ROBOT) convert --input $< --format ofn --output $@ 330 | 331 | $(PRESEED): $(SRCMERGED) 332 | $(ROBOT) query -f csv -i $< --query ../sparql/terms.sparql $@.tmp &&\ 333 | cat $@.tmp | sort | uniq > $@ 334 | 335 | SIMPLESEED=$(TMPDIR)/simple_seed.txt 336 | 337 | $(SIMPLESEED): $(SRCMERGED) $(ONTOLOGYTERMS) 338 | $(ROBOT) query -f csv -i $< --query ../sparql/simple-seed.sparql $@.tmp &&\ 339 | cat $@.tmp $(ONTOLOGYTERMS) | sort | uniq > $@ &&\ 340 | echo "http://www.geneontology.org/formats/oboInOwl#SubsetProperty" >> $@ &&\ 341 | echo "http://www.geneontology.org/formats/oboInOwl#SynonymTypeProperty" >> $@ 342 | 343 | 344 | ALLSEED = $(PRESEED) \ 345 | 346 | 347 | $(IMPORTSEED): $(ALLSEED) | $(TMPDIR) 348 | if [ $(IMP) = true ]; then cat $(ALLSEED) | sort | uniq > $@; fi 349 | 350 | ANNOTATION_PROPERTIES=rdfs:label IAO:0000115 351 | 352 | # ---------------------------------------- 353 | # Import modules 354 | # ---------------------------------------- 355 | # Most ontologies are modularly constructed using portions of other ontologies 356 | # These live in the imports/ folder 357 | # This pattern uses ROBOT to generate an import module 358 | 359 | # Should be able to drop this if robot can just take a big messy list of terms as input. 360 | $(IMPORTDIR)/%_terms_combined.txt: $(IMPORTSEED) $(IMPORTDIR)/%_terms.txt 361 | if [ $(IMP) = true ]; then cat $^ | grep -v ^# | sort | uniq > $@; fi 362 | 363 | 364 | 365 | 366 | $(IMPORTDIR)/%_import.owl: $(MIRRORDIR)/%.owl $(IMPORTDIR)/%_terms_combined.txt 367 | if [ $(IMP) = true ]; then $(ROBOT) query -i $< --update ../sparql/preprocess-module.ru \ 368 | extract -T $(IMPORTDIR)/$*_terms_combined.txt --force true --copy-ontology-annotations true --individuals include --method BOT \ 369 | query --update ../sparql/inject-subset-declaration.ru --update ../sparql/inject-synonymtype-declaration.ru --update ../sparql/postprocess-module.ru \ 370 | $(ANNOTATE_CONVERT_FILE); fi 371 | 372 | .PRECIOUS: $(IMPORTDIR)/%_import.owl 373 | 374 | 375 | .PHONY: refresh-imports 376 | refresh-imports: 377 | $(MAKE) IMP=true MIR=true PAT=false IMP_LARGE=true all_imports -B 378 | 379 | .PHONY: no-mirror-refresh-imports 380 | no-mirror-refresh-imports: 381 | $(MAKE) IMP=true MIR=false PAT=false IMP_LARGE=true all_imports -B 382 | 383 | .PHONY: refresh-imports-excluding-large 384 | refresh-imports-excluding-large: 385 | $(MAKE) IMP=true MIR=true PAT=false IMP_LARGE=false all_imports -B 386 | 387 | .PHONY: refresh-% 388 | refresh-%: 389 | $(MAKE) IMP=true IMP_LARGE=true MIR=true PAT=false $(IMPORTDIR)/$*_import.owl -B 390 | 391 | .PHONY: no-mirror-refresh-% 392 | no-mirror-refresh-%: 393 | $(MAKE) IMP=true IMP_LARGE=true MIR=false PAT=false $(IMPORTDIR)/$*_import.owl -B 394 | 395 | 396 | # ---------------------------------------- 397 | # Components 398 | # ---------------------------------------- 399 | # Some ontologies contain external and internal components. A component is included in the ontology in its entirety. 400 | 401 | COMP=true # Global parameter to bypass component generation 402 | 403 | .PHONY: all_components 404 | all_components: $(OTHER_SRC) 405 | 406 | .PHONY: recreate-components 407 | recreate-components: 408 | $(MAKE) COMP=true IMP=false MIR=true PAT=true IMP_LARGE=false all_components -B 409 | 410 | .PHONY: no-mirror-recreate-components 411 | no-mirror-recreate-components: 412 | $(MAKE) COMP=true IMP=false MIR=false PAT=true IMP_LARGE=false all_components -B 413 | 414 | .PHONY: recreate-% 415 | recreate-%: 416 | $(MAKE) COMP=true IMP=false IMP_LARGE=false MIR=true PAT=true $(COMPONENTSDIR)/$*.owl -B 417 | 418 | .PHONY: no-mirror-recreate-% 419 | no-mirror-recreate-%: 420 | $(MAKE) COMP=true IMP=false IMP_LARGE=false MIR=false PAT=true $(COMPONENTSDIR)/$*.owl -B 421 | 422 | $(COMPONENTSDIR)/%.owl: | $(COMPONENTSDIR) 423 | test -f $@ || touch $@ 424 | .PRECIOUS: $(COMPONENTSDIR)/%.owl 425 | 426 | 427 | 428 | $(COMPONENTSDIR)/t4fs-template.owl: $(TEMPLATEDIR)/index.tsv $(TEMPLATEDIR)/properties.tsv $(TEMPLATEDIR)/t4fs.tsv 429 | if [ $(COMP) = true ] ; then $(ROBOT) template --add-prefixes config/context.json \ 430 | $(patsubst %, --template %, $^) \ 431 | $(ANNOTATE_CONVERT_FILE); fi 432 | 433 | .PRECIOUS: $(COMPONENTSDIR)/t4fs-template.owl 434 | # ---------------------------------------- 435 | # Mirroring upstream ontologies 436 | # ---------------------------------------- 437 | 438 | IMP=true # Global parameter to bypass import generation 439 | MIR=true # Global parameter to bypass mirror generation 440 | IMP_LARGE=true # Global parameter to bypass handling of large imports 441 | 442 | ifeq ($(strip $(MIR)),true) 443 | 444 | 445 | ## ONTOLOGY: bfo 446 | .PHONY: mirror-bfo 447 | .PRECIOUS: $(MIRRORDIR)/bfo.owl 448 | mirror-bfo: | $(TMPDIR) 449 | curl -L $(OBOBASE)/bfo.owl --create-dirs -o $(TMPDIR)/bfo-download.owl --retry 4 --max-time 200 && \ 450 | $(ROBOT) convert -i $(TMPDIR)/bfo-download.owl -o $(TMPDIR)/$@.owl 451 | 452 | 453 | ## ONTOLOGY: iao 454 | .PHONY: mirror-iao 455 | .PRECIOUS: $(MIRRORDIR)/iao.owl 456 | mirror-iao: | $(TMPDIR) 457 | curl -L $(OBOBASE)/iao.owl --create-dirs -o $(TMPDIR)/iao-download.owl --retry 4 --max-time 200 && \ 458 | $(ROBOT) convert -i $(TMPDIR)/iao-download.owl -o $(TMPDIR)/$@.owl 459 | 460 | 461 | $(MIRRORDIR)/%.owl: mirror-% | $(MIRRORDIR) 462 | if [ -f $(TMPDIR)/mirror-$*.owl ]; then if cmp -s $(TMPDIR)/mirror-$*.owl $@ ; then echo "Mirror identical, ignoring."; else echo "Mirrors different, updating." &&\ 463 | cp $(TMPDIR)/mirror-$*.owl $@; fi; fi 464 | 465 | else # MIR=false 466 | $(MIRRORDIR)/%.owl: 467 | @echo "Not refreshing $@ because the mirrorring pipeline is disabled (MIR=$(MIR))." 468 | endif 469 | 470 | 471 | 472 | # ---------------------------------------- 473 | # Subsets 474 | # ---------------------------------------- 475 | $(SUBSETDIR)/%.tsv: $(SUBSETDIR)/%.owl 476 | $(ROBOT) query -f tsv -i $< -s ../sparql/labels.sparql $@ 477 | .PRECIOUS: $(SUBSETDIR)/%.tsv 478 | 479 | $(SUBSETDIR)/%.owl: $(ONT).owl | $(SUBSETDIR) 480 | $(OWLTOOLS) $< --extract-ontology-subset --fill-gaps --subset $* -o $@.tmp.owl && mv $@.tmp.owl $@ &&\ 481 | $(ROBOT) annotate --input $@ --ontology-iri $(ONTBASE)/$@ $(ANNOTATE_ONTOLOGY_VERSION) -o $@.tmp.owl && mv $@.tmp.owl $@ 482 | .PRECIOUS: $(SUBSETDIR)/%.owl 483 | 484 | 485 | $(SUBSETDIR)/%.obo: $(SUBSETDIR)/%.owl 486 | $(ROBOT) convert --input $< --check false -f obo $(OBO_FORMAT_OPTIONS) -o $@.tmp.obo && grep -v ^owl-axioms $@.tmp.obo > $@ && rm $@.tmp.obo 487 | 488 | $(SUBSETDIR)/%.json: $(SUBSETDIR)/%.owl 489 | $(ROBOT) convert --input $< --check false -f json -o $@.tmp.json &&\ 490 | mv $@.tmp.json $@ 491 | 492 | 493 | # --------------------------------------------- 494 | # Sparql queries: Table exports / Query Reports 495 | # --------------------------------------------- 496 | 497 | SPARQL_EXPORTS_ARGS = $(foreach V,$(SPARQL_EXPORTS),-s $(SPARQLDIR)/$(V).sparql $(REPORTDIR)/$(V).tsv) 498 | # This combines all into one single command 499 | 500 | .PHONY: custom_reports 501 | custom_reports: $(EDIT_PREPROCESSED) | $(REPORTDIR) 502 | ifneq ($(SPARQL_EXPORTS_ARGS),) 503 | $(ROBOT) query -f tsv --use-graphs true -i $< $(SPARQL_EXPORTS_ARGS) 504 | endif 505 | 506 | # ---------------------------------------- 507 | # Release artefacts: export formats 508 | # ---------------------------------------- 509 | 510 | 511 | $(ONT)-base.obo: $(ONT)-base.owl 512 | $(ROBOT) convert --input $< --check false -f obo $(OBO_FORMAT_OPTIONS) -o $@.tmp.obo && grep -v ^owl-axioms $@.tmp.obo > $@ && rm $@.tmp.obo 513 | $(ONT)-base.json: $(ONT)-base.owl 514 | $(ROBOT) annotate --input $< --ontology-iri $(ONTBASE)/$@ $(ANNOTATE_ONTOLOGY_VERSION) \ 515 | convert --check false -f json -o $@.tmp.json &&\ 516 | mv $@.tmp.json $@ 517 | $(ONT)-simple.obo: $(ONT)-simple.owl 518 | $(ROBOT) convert --input $< --check false -f obo $(OBO_FORMAT_OPTIONS) -o $@.tmp.obo && grep -v ^owl-axioms $@.tmp.obo > $@ && rm $@.tmp.obo 519 | $(ONT)-simple.json: $(ONT)-simple.owl 520 | $(ROBOT) annotate --input $< --ontology-iri $(ONTBASE)/$@ $(ANNOTATE_ONTOLOGY_VERSION) \ 521 | convert --check false -f json -o $@.tmp.json &&\ 522 | mv $@.tmp.json $@ 523 | $(ONT)-full.obo: $(ONT)-full.owl 524 | $(ROBOT) convert --input $< --check false -f obo $(OBO_FORMAT_OPTIONS) -o $@.tmp.obo && grep -v ^owl-axioms $@.tmp.obo > $@ && rm $@.tmp.obo 525 | $(ONT)-full.json: $(ONT)-full.owl 526 | $(ROBOT) annotate --input $< --ontology-iri $(ONTBASE)/$@ $(ANNOTATE_ONTOLOGY_VERSION) \ 527 | convert --check false -f json -o $@.tmp.json &&\ 528 | mv $@.tmp.json $@ 529 | t4fs-community.obo: t4fs-community.owl 530 | $(ROBOT) convert --input $< --check false -f obo $(OBO_FORMAT_OPTIONS) -o $@.tmp.obo && grep -v ^owl-axioms $@.tmp.obo > $@ && rm $@.tmp.obo 531 | t4fs-community.json: t4fs-community.owl 532 | $(ROBOT) annotate --input $< --ontology-iri $(ONTBASE)/$@ $(ANNOTATE_ONTOLOGY_VERSION) \ 533 | convert --check false -f json -o $@.tmp.json &&\ 534 | mv $@.tmp.json $@ 535 | # ---------------------------------------- 536 | # Release artefacts: main release artefacts 537 | # ---------------------------------------- 538 | 539 | $(ONT).owl: $(ONT)-full.owl 540 | $(ROBOT) annotate --input $< --ontology-iri $(URIBASE)/$@ $(ANNOTATE_ONTOLOGY_VERSION) \ 541 | convert -o $@.tmp.owl && mv $@.tmp.owl $@ 542 | 543 | $(ONT).obo: $(ONT).owl 544 | $(ROBOT) convert --input $< --check false -f obo $(OBO_FORMAT_OPTIONS) -o $@.tmp.obo && grep -v ^owl-axioms $@.tmp.obo > $@ && rm $@.tmp.obo 545 | $(ONT).json: $(ONT).owl 546 | $(ROBOT) annotate --input $< --ontology-iri $(URIBASE)/$@ $(ANNOTATE_ONTOLOGY_VERSION) \ 547 | convert --check false -f json -o $@.tmp.json &&\ 548 | mv $@.tmp.json $@ 549 | # ----------------------------------------------------- 550 | # Release artefacts: variants (base, full, simple, etc) 551 | # ----------------------------------------------------- 552 | SHARED_ROBOT_COMMANDS = 553 | 554 | $(ONTOLOGYTERMS): $(SRCMERGED) 555 | $(ROBOT) query -f csv -i $< --query ../sparql/t4fs_terms.sparql $@ 556 | 557 | # ROBOT pipeline that merges imports, including components. 558 | ROBOT_RELEASE_IMPORT_MODE=$(ROBOT) merge --input $< 559 | 560 | # ROBOT pipeline that removes imports, then merges components. This is for release artefacts that start from "base" 561 | ROBOT_RELEASE_IMPORT_MODE_BASE=$(ROBOT) remove --input $< --select imports --trim false merge $(patsubst %, -i %, $(OTHER_SRC)) 562 | 563 | # base: A version of the ontology that does not include any externally imported axioms. 564 | $(ONT)-base.owl: $(EDIT_PREPROCESSED) $(OTHER_SRC) $(IMPORT_FILES) 565 | $(ROBOT_RELEASE_IMPORT_MODE) \ 566 | reason --reasoner ELK --equivalent-classes-allowed asserted-only --exclude-tautologies structural --annotate-inferred-axioms False \ 567 | relax \ 568 | reduce -r ELK \ 569 | remove --base-iri $(URIBASE)/T4FS --axioms external --preserve-structure false --trim false \ 570 | $(SHARED_ROBOT_COMMANDS) \ 571 | annotate --link-annotation http://purl.org/dc/elements/1.1/type http://purl.obolibrary.org/obo/IAO_8000001 \ 572 | --ontology-iri $(ONTBASE)/$@ $(ANNOTATE_ONTOLOGY_VERSION) \ 573 | --output $@.tmp.owl && mv $@.tmp.owl $@ 574 | # Full: The full artefacts with imports merged, reasoned. 575 | $(ONT)-full.owl: $(EDIT_PREPROCESSED) $(OTHER_SRC) $(IMPORT_FILES) 576 | $(ROBOT_RELEASE_IMPORT_MODE) \ 577 | reason --reasoner ELK --equivalent-classes-allowed asserted-only --exclude-tautologies structural \ 578 | relax \ 579 | reduce -r ELK \ 580 | $(SHARED_ROBOT_COMMANDS) annotate --ontology-iri $(ONTBASE)/$@ $(ANNOTATE_ONTOLOGY_VERSION) --output $@.tmp.owl && mv $@.tmp.owl $@ 581 | # foo-simple: (edit->reason,relax,reduce,drop imports, drop every axiom which contains an entity outside the "namespaces of interest") 582 | # drop every axiom: filter --term-file keep_terms.txt --trim true 583 | # remove --select imports --trim false 584 | $(ONT)-simple.owl: $(EDIT_PREPROCESSED) $(OTHER_SRC) $(SIMPLESEED) $(IMPORT_FILES) 585 | $(ROBOT_RELEASE_IMPORT_MODE) \ 586 | reason --reasoner ELK --equivalent-classes-allowed asserted-only --exclude-tautologies structural --annotate-inferred-axioms False \ 587 | relax \ 588 | remove --axioms equivalent \ 589 | relax \ 590 | filter --term-file $(SIMPLESEED) --select "annotations ontology anonymous self" --trim true --signature true \ 591 | reduce -r ELK \ 592 | query --update ../sparql/inject-subset-declaration.ru --update ../sparql/inject-synonymtype-declaration.ru \ 593 | $(SHARED_ROBOT_COMMANDS) annotate --ontology-iri $(ONTBASE)/$@ $(ANNOTATE_ONTOLOGY_VERSION) --output $@.tmp.owl && mv $@.tmp.owl $@ 594 | 595 | t4fs-community.owl: 596 | echo "ERROR: You have configured a custom release artefact ($@); this release artefact needs to be define in t4fs.Makefile!" && false 597 | # ---------------------------------------- 598 | # Debugging Tools 599 | # ---------------------------------------- 600 | 601 | explain_unsat: $(EDIT_PREPROCESSED) 602 | $(ROBOT) explain -i $< -M unsatisfiability --unsatisfiable random:10 --explanation $(TMPDIR)/$@.md 603 | 604 | 605 | 606 | RELEASE_ASSETS_AFTER_RELEASE=$(foreach n,$(RELEASE_ASSETS), ../../$(n)) 607 | GHVERSION=v$(VERSION) 608 | 609 | .PHONY: public_release 610 | public_release: 611 | @test $(GHVERSION) 612 | ls -alt $(RELEASE_ASSETS_AFTER_RELEASE) 613 | gh release create $(GHVERSION) --title "$(VERSION) Release" --draft $(RELEASE_ASSETS_AFTER_RELEASE) --generate-notes 614 | 615 | # ---------------------------------------- 616 | # General Validation 617 | # ---------------------------------------- 618 | TSV= 619 | ALL_TSV_FILES= 620 | 621 | validate-tsv: $(TSV) | $(TMPDIR) 622 | for FILE in $< ; do \ 623 | tsvalid $$FILE > $(TMPDIR)/validate.txt; \ 624 | if [ -s $(TMPDIR)/validate.txt ]; then cat $(TMPDIR)/validate.txt && exit 1; fi ; \ 625 | done 626 | 627 | validate-all-tsv: $(ALL_TSV_FILES) 628 | $(MAKE) validate-tsv TSV="$^" 629 | 630 | # ---------------------------------------- 631 | # Editors Utilities 632 | # ---------------------------------------- 633 | 634 | 635 | 636 | .PHONY: normalize_src 637 | normalize_src: $(SRC) 638 | $(ROBOT) convert -i $< -f ofn -o $(TMPDIR)/normalise && mv $(TMPDIR)/normalise $< 639 | 640 | .PHONY: validate_idranges 641 | validate_idranges: 642 | amm $(SCRIPTSDIR)/validate_id_ranges.sc t4fs-idranges.owl 643 | 644 | .PHONY: update_repo 645 | update_repo: 646 | sh $(SCRIPTSDIR)/update_repo.sh 647 | 648 | 649 | 650 | # Note to future generations: computing the real path relative to the 651 | # current directory is a way to ensure we only clean up directories that 652 | # are located below the current directory, regardless of the contents of 653 | # the *DIR variables. 654 | .PHONY: clean 655 | clean: 656 | for dir in $(MIRRORDIR) $(TMPDIR) $(UPDATEREPODIR) ; do \ 657 | reldir=$$(realpath --relative-to=$$(pwd) $$dir) ; \ 658 | case $$reldir in .*|"") ;; *) rm -rf $$reldir/* ;; esac \ 659 | done 660 | rm -f $(CLEANFILES) 661 | 662 | .PHONY: help 663 | help: 664 | @echo "$$data" 665 | 666 | define data 667 | Usage: [IMAGE=(odklite|odkfull)] [ODK_DEBUG=yes] sh run.sh make [(IMP|MIR|IMP_LARGE|PAT)=(false|true)] command 668 | 669 | ---------------------------------------- 670 | Command reference 671 | ---------------------------------------- 672 | 673 | Core commands: 674 | * prepare_release: Run the entire release pipeline. Use make IMP=false prepare_release to avoid rerunning the imports 675 | * prepare_release_fast: Run the entire release pipeline without refreshing imports, recreating components or recompiling patterns. 676 | * update_repo: Update the ODK repository setup using the config file t4fs-odk.yaml 677 | * test: Running all validation tests 678 | * test_fast: Runs the test suite, but without updating imports or components 679 | * odkversion: Show the current version of the ODK Makefile and ROBOT. 680 | * clean: Delete all temporary files 681 | * help: Print ODK Usage information 682 | * public_release: Uploads the release file to a release management system, such as GitHub releases. Must be configured. 683 | 684 | 685 | Imports management: 686 | * refresh-imports: Refresh all imports and mirrors. 687 | * recreate-components: Recreate all components. 688 | * no-mirror-refresh-imports: Refresh all imports without downloading mirrors. 689 | * refresh-imports-excluding-large: Refresh all imports and mirrors, but skipping the ones labelled as 'is_large'. 690 | * refresh-%: Refresh a single import, i.e. refresh-go will refresh 'imports/go_import.owl'. 691 | * no-mirror-refresh-%: Refresh a single import without updating the mirror, i.e. refresh-go will refresh 'imports/go_import.owl'. 692 | * mirror-%: Refresh a single mirror. 693 | 694 | Editor utilities: 695 | * validate_idranges: Make sure your ID ranges file is formatted correctly 696 | * normalize_src: Load and save your t4fs-edit file after you to make sure its serialised correctly 697 | * explain_unsat: If you have unsatisfiable classes, this command will create a markdown file (tmp/explain_unsat.md) which will explain all your unsatisfiable classes 698 | * validate-all-tsv: Check all your tsv files for possible problems in syntax. Use ALL_TSV_FILES variable to list files 699 | * validate-tsv: Check a tsv file for syntactic problems with tsvalid. Use TSV variable to pass filepath, e.g. make TSV=../my.tsv validate-tsv. 700 | * release_diff: Create a diff between the current release and the new release 701 | 702 | Additional build commands (advanced users) 703 | * all: Run the entire pipeline (like prepare_release), but without copying the release files to the release directory. 704 | * all_subsets: Build all subsets 705 | * custom_reports: Generate all custom sparql reports you have configured in your t4fs-odk.yaml file. 706 | * all_assets: Build all assets 707 | * show_assets: Print a list of all assets that would be build by the release pipeline 708 | * all_mappings: Update all SSSOM mapping sets 709 | 710 | Additional QC commands (advanced users) 711 | * robot_reports: Run all configured ROBOT reports 712 | * validate_profile_%: Run an OWL2 DL profile validation check, for example validate_profile_t4fs-edit.owl. 713 | * reason_test: Run a basic reasoning test 714 | 715 | Examples: 716 | * sh run.sh make IMP=false prepare_release 717 | * sh run.sh make update_repo 718 | * sh run.sh make test 719 | 720 | Tricks: 721 | * Add -B to the end of your command to force re-running it even if nothing has changed 722 | * Use the IMAGE parameter to the run.sh script to use a different image like odklite 723 | * Use ODK_DEBUG=yes sh run.sh make ... to print information about timing and debugging 724 | 725 | endef 726 | export data 727 | 728 | include t4fs.Makefile --------------------------------------------------------------------------------