diff --git a/components/content/embed.tsx b/components/content/embed.tsx index d174af824a..8f1f5021b7 100644 --- a/components/content/embed.tsx +++ b/components/content/embed.tsx @@ -1,7 +1,7 @@ import type { ReactNode } from "react"; interface EmbedProps { - children: ReactNode; + children?: ReactNode; src: string; /** Added by `with-iframe-titles` mdx plugin. */ title?: string; @@ -20,7 +20,7 @@ export function Embed(props: Readonly): ReactNode { src={src} title={title} /> -
{children}
+ {children != null && children !== "" ?
{children}
: null} ); } diff --git a/components/content/figure.tsx b/components/content/figure.tsx index 50fae023d0..d449276931 100644 --- a/components/content/figure.tsx +++ b/components/content/figure.tsx @@ -8,7 +8,7 @@ interface FigureProps { /** @default "stretch" */ alignment?: FigureAlignment; alt?: string; - children: ReactNode; + children?: ReactNode; /** Maybe added by `with-image-sizes` mdx plugin. */ height?: number; src: string; @@ -38,9 +38,11 @@ export function Figure(props: Readonly): ReactNode { )} > {alt} -
- {children} -
+ {children != null && children !== "" ? ( +
+ {children} +
+ ) : null} ); } diff --git a/components/content/video.tsx b/components/content/video.tsx index 46074c9855..c00c8a4b92 100644 --- a/components/content/video.tsx +++ b/components/content/video.tsx @@ -4,7 +4,7 @@ import type { VideoProvider } from "@/lib/content/options"; import { createVideoUrl } from "@/lib/navigation/create-video-url"; interface VideoProps { - children: ReactNode; + children?: ReactNode; id: string; provider: VideoProvider; startTime?: number | null; @@ -27,7 +27,7 @@ export function Video(props: Readonly): ReactNode { src={src} title={title} /> -
{children}
+ {children != null && children !== "" ?
{children}
: null} ); } diff --git a/content/en/curricula/an-introduction-to-conceptual-modelling/index.mdx b/content/en/curricula/an-introduction-to-conceptual-modelling/index.mdx new file mode 100644 index 0000000000..9cb422120b --- /dev/null +++ b/content/en/curricula/an-introduction-to-conceptual-modelling/index.mdx @@ -0,0 +1,31 @@ +--- +title: An introduction to Conceptual Modelling +locale: en +publication-date: '2017-03-13' +version: '1.0' +editors: + - constantopoulos-panos +tags: + - modelling + - workshop +resources: + - discriminant: resources-hosted + value: >- + an-introduction-to-conceptual-modelling-an-introduction-to-conceptual-modelling + - discriminant: resources-hosted + value: an-introduction-to-conceptual-modelling-part-1-information-modelling + - discriminant: resources-hosted + value: an-introduction-to-conceptual-modelling-part-2-building-conceptual-models + - discriminant: resources-hosted + value: an-introduction-to-conceptual-modelling-part-3-modelling-practice + - discriminant: resources-hosted + value: >- + an-introduction-to-conceptual-modelling-part-4-from-models-to-ontologies-and-back + - discriminant: resources-hosted + value: an-introduction-to-conceptual-modelling-suggested-reading +summary: + content: This workshop introduces the basics of conceptual modelling and ontologies. + +--- + +This workshop introduces the basics of conceptual modelling and ontologies. We discuss the principles and techniques that can be used in order to formulate the knowledge we have about a specific domain in such a way that it can be understood and used in reasoning tasks by both humans and machines. The nature and role of models is reviewed. Focusing on conceptual models, we present the building blocks and mechanisms used to create them. Some frequent modelling issues and usual practices addressing them are discussed. Step-by-step examples are given, as well as a small set of assignments for personal practice. An introduction to ontologies as a kind of models supporting data access, integration, interoperability and application development, along with a short overview of CIDOC CRM as an exemplar ontology for the cultural domain, finish off the workshop. Prepared by Prof. Panos Constantopoulos, Athens University of Economics and Business & Digital Curation Unit, Athena Research Centre. diff --git a/content/en/people/dariah-teach/index.mdx b/content/en/people/dariah-teach/index.mdx new file mode 100644 index 0000000000..6b9b2be85a --- /dev/null +++ b/content/en/people/dariah-teach/index.mdx @@ -0,0 +1,5 @@ +--- +name: DARIAH Teach +image: /assets/images/default-avatar.svg +social: [] +--- diff --git a/content/en/resources/hosted/an-introduction-to-conceptual-modelling-an-introduction-to-conceptual-modelling/index.mdx b/content/en/resources/hosted/an-introduction-to-conceptual-modelling-an-introduction-to-conceptual-modelling/index.mdx new file mode 100644 index 0000000000..af1a91f9be --- /dev/null +++ b/content/en/resources/hosted/an-introduction-to-conceptual-modelling-an-introduction-to-conceptual-modelling/index.mdx @@ -0,0 +1,38 @@ +--- +title: An introduction to Conceptual Modelling +locale: en +publication-date: 2017-03-13 +version: '1.0' +authors: + - constantopoulos-panos +editors: [] +contributors: + - constantopoulos-panos +tags: + - modelling + - workshop +sources: + - dariah +license: cc-by-4.0 +table-of-contents: true +summary: + content: >- + This workshop introduces the basics of conceptual modelling and ontologies. + We discuss the principles and techniques that can be used in order to + formulate the knowledge we have about a specific domain in such a way that + it can be understood and used in reasoning tasks by both humans and + machines. The nature and role of models is reviewed. Focusing on conceptual + models, we present the building blocks and mechanisms used to create them. + Some frequent modelling issues and usual practices addressing them are + discussed. Step-by-step examples are given, as well as a small set of + assignments for personal practice. An introduction to ontologies as a kind + of models supporting data access, integration, interoperability and + application development, along with a short overview of CIDOC CRM as an + exemplar ontology for the cultural domain, finish off the workshop. Prepared + by Prof. Panos Constantopoulos, Athens University of Economics and Business + & Digital Curation Unit, Athena Research Centre. +content-type: training-module +translations: [] +--- +This workshop introduces the basics of conceptual modelling and ontologies. We discuss the principles and techniques that can be used in order to formulate the knowledge we have about a specific domain in such a way that it can be understood and used in reasoning tasks by both humans and machines. The nature and role of models is reviewed. Focusing on conceptual models, we present the building blocks and mechanisms used to create them. Some frequent modelling issues and usual practices addressing them are discussed. Step-by-step examples are given, as well as a small set of assignments for personal practice. An introduction to ontologies as a kind of models supporting data access, integration, interoperability and application development, along with a short overview of CIDOC CRM as an exemplar ontology for the cultural domain, finish off the workshop. \ +Prepared by Prof. Panos Constantopoulos, Athens University of Economics and Business & Digital Curation Unit, Athena Research Centre. diff --git a/content/en/resources/hosted/an-introduction-to-conceptual-modelling-part-1-information-modelling/index.mdx b/content/en/resources/hosted/an-introduction-to-conceptual-modelling-part-1-information-modelling/index.mdx new file mode 100644 index 0000000000..6f50f7d0ca --- /dev/null +++ b/content/en/resources/hosted/an-introduction-to-conceptual-modelling-part-1-information-modelling/index.mdx @@ -0,0 +1,52 @@ +--- +title: 'Part 1: Information Modelling' +locale: en +publication-date: 2017-03-13 +version: '1.0' +authors: + - constantopoulos-panos +editors: [] +contributors: [] +tags: + - modelling + - information-architecture + - data-modeling + - metadata +sources: + - dariah + - dariah-teach +license: cc-by-4.0 +table-of-contents: true +summary: + title: 'Part 1: Information Modelling' + content: >- + This resource introduces the basics of data modelling, its principles and + techniques. It discusses models, symbolic structures in conceptual + modelling, representing a domain and formulating an elementary model. +content-type: training-module +translations: [] +dariah-national-consortia: [] +--- +This module from the 'An Introduction to Conceptual Modelling' curriculum gives an introduction on what a data model is and the basic principles and techniques to formulating models that are used for reasoning tasks, both by humans and machines. The module continues to explain symbolic structures in conceptual modelling such as entities, attributes, relations, instances and classes. Furthermore, it discusses how domains are represented and formulates an elementary model for better understanding. + +## Learning Outcomes + +After completing this resource, learners should be able to: + +* X +* Y +* Z + +## Information Modelling + + + +## Assignment 1: Creating an Elementary Model + +You are now invited to build a model to represent information about people and their participation in clubs. + +For each person we record the full name, social security number, telephone number, address and spouse/partner. For clubs we record the name, address, telephone number, and annual fee. We also record the members of the club, the president and the treasurer. For each membership we record the start and end date. Similarly, we record the start and end date of the president’s and treasurer’s terms. + +Using the simple graphical notation introduced previously, draw a model showing all entities and properties. diff --git a/content/en/resources/hosted/an-introduction-to-conceptual-modelling-part-2-building-conceptual-models/index.mdx b/content/en/resources/hosted/an-introduction-to-conceptual-modelling-part-2-building-conceptual-models/index.mdx new file mode 100644 index 0000000000..cdff8bd202 --- /dev/null +++ b/content/en/resources/hosted/an-introduction-to-conceptual-modelling-part-2-building-conceptual-models/index.mdx @@ -0,0 +1,79 @@ +--- +title: 'Part 2: Building conceptual models' +locale: en +publication-date: 2017-03-13 +version: '1.0' +authors: + - constantopoulos-panos +editors: [] +contributors: [] +tags: + - modelling + - data-modeling + - ontologies +sources: + - dariah + - dariah-teach +license: cc-by-4.0 +table-of-contents: true +summary: + title: Building conceptual models + content: >- + This module discusses entities, properties: relations and attributes, + cardinality constraints. Furthermore, it explains instantiation / + classification: instances, classes, multiple instantiation, specialization / + generalization: inheritance of properties, multiple generalization, + genus-species hierarchies. +content-type: training-module +translations: [] +dariah-national-consortia: [] +--- +This module from the 'An Introduction to Conceptual Modelling' curriculum contains two parts. The first part (2a) discusses entities and relations and attributes, two aspects of properties. Also, it explains what cardinality constraints are. + +The second part (2b) explores instantiation and classification: instances, classes and multiple instantiation. In addition, Dr Panos Constantopoulos explains what specialization and generalization are: inheritance of properties, multiple generalization, genus-species hierarchies. + +## Learning Outcomes + +After completing this resource, learners should be able to: + +* X +* Y +* Z + +## Part 2a + +This first video explains entities, properties: relations and attributes and cardinality constraints. + + + +## Learning Outcomes + +After completing this resource, learners should be able to: + +* X +* Y +* Z + +## Part 2b + +Now that you have completed part 2a, it is time to learn more about instantiation / classification: instances, classes, multiple instantiation; and specialization / generalization: inheritance of properties, multiple generalization, genus-species hierarchies. + + + +## Assignment 2: Simple geography + +In this assignment you are invited to build an information model capable of addressing some of the requirements of a geographical information system. + +Draw a conceptual schema that supports the representation of statements like the ones below: + +* France is a country with an area of 643801 km2 and 67 million inhabitants. Its capital is Paris with 12 million inhabitants. +* Thessaloniki is a city in Greece with 1 million inhabitants at a distance of 500 km from Athens. +* Spain borders France, Portugal and Morocco. +* The river Rhine is 1230 km long. It originates in Switzerland, flows through Germany, France and the Netherlands, and through the cities of Basel, Switzerland; Strasbourg, France; Worms, Basel and Cologne, Germany. It drains to the North Sea through the Netherlands. +* The GDP of Germany was 2580.06 billion euro in 2010 and 282.82 billion euro in 2013. +* The exports of cars of Japan to France in 1987 were worth 2 billion euro. +* Spain has been a member of the EU since 1986. diff --git a/content/en/resources/hosted/an-introduction-to-conceptual-modelling-part-3-modelling-practice/index.mdx b/content/en/resources/hosted/an-introduction-to-conceptual-modelling-part-3-modelling-practice/index.mdx new file mode 100644 index 0000000000..c04db8c1b0 --- /dev/null +++ b/content/en/resources/hosted/an-introduction-to-conceptual-modelling-part-3-modelling-practice/index.mdx @@ -0,0 +1,64 @@ +--- +title: 'Part 3: Modelling practice' +locale: en +publication-date: 2017-03-13 +version: '1.0' +authors: + - constantopoulos-panos +editors: [] +contributors: [] +tags: + - modelling + - data-modeling + - ontologies +sources: + - dariah + - dariah-teach +license: cc-by-4.0 +table-of-contents: true +summary: + title: Modelling practice + content: >- + This module investigates how to represent types and multiple classification + vs. multiple generalization. Also, it explores mereology: part-whole + relations as well as events and activities. +content-type: training-module +translations: [] +dariah-national-consortia: [] +--- +This module from the 'An Introduction to Conceptual Modelling' curriculum explains how types or kinds can be represented in a model. Also, it dives into multiple classification vs. multiple generalization and mereology: part-whole relations. Finally, it looks into the representation of events and activities. + +## Learning Outcomes + +After completing this resource, learners should be able to: + +* X +* Y +* Z + +## Modelling practice + + + +## Assignment 3: Modelling activities + +In the Archaeological Museum of Sparta the following two acts took place: + +* G.P., a farmer, donated to the Museum, with the mediation of the lawyer L.M., a squat lekythos which he found in his orchard. +* Then, H.R., conservationist to the Museum, took the item to the conservation lab for cleaning. + +Formulate a model (schema + data) for representing the above state of affairs. + +## Assignment 4: Pets in the neighbourhood + +Draw a schema for the creation of a registry of pets in your neigbourhood. + +For each pet you need to record the species, gender, basic colour, size, owner, and a brief free text description. + +You also need to keep some information about persons with regard to their relation to animals. In particular, whether a person owns animals and which ones; relations, such as “likes”, “admires”, “has been bitten by”, etc., between persons and specific animals; and relations that express general dispositions of persons towards animals species, such as “is afraid of snakes”, “loves dogs”, “is allergic to cats”, etc. + +Finally, the species recorded should be connected with the zoological taxonomy. + +You are invited to explore two alternative approaches: (1) model species as classes which animals belong to; (2) model species as attribute values assigned to animals. Give examples of cases in which you might prefer one approach to the other. diff --git a/content/en/resources/hosted/an-introduction-to-conceptual-modelling-part-4-from-models-to-ontologies-and-back/index.mdx b/content/en/resources/hosted/an-introduction-to-conceptual-modelling-part-4-from-models-to-ontologies-and-back/index.mdx new file mode 100644 index 0000000000..acd25b7519 --- /dev/null +++ b/content/en/resources/hosted/an-introduction-to-conceptual-modelling-part-4-from-models-to-ontologies-and-back/index.mdx @@ -0,0 +1,42 @@ +--- +title: 'Part 4: From Models to Ontologies, and Back' +locale: en +publication-date: 2017-03-13 +version: '1.0' +authors: + - constantopoulos-panos +editors: [] +contributors: + - constantopoulos-panos +tags: + - modelling + - workshop +sources: + - dariah +license: cc-by-4.0 +table-of-contents: true +summary: + title: From models to ontologies, and back + content: >- + This module explains what ontologies are and why they are important for + conceptual modelling. Also, it briefly introduces an ontology for cultural + heritage, CIDOC CRM. +content-type: training-module +translations: [] +dariah-national-consortia: [] +--- +This final module discusses what ontologies are and why they are needed in conceptual modelling. Also, this resource provides a brief introduction to CIDOC CRM (Conceptual reference model), an ontology for cultural heritage. + +## Learning Outcomes + +After completing this resource, learners should be able to: + +* X +* Y +* Z + +## From Models to Ontologies, and Back + + diff --git a/content/en/resources/hosted/an-introduction-to-conceptual-modelling-suggested-reading/index.mdx b/content/en/resources/hosted/an-introduction-to-conceptual-modelling-suggested-reading/index.mdx new file mode 100644 index 0000000000..c3c6b8f2ee --- /dev/null +++ b/content/en/resources/hosted/an-introduction-to-conceptual-modelling-suggested-reading/index.mdx @@ -0,0 +1,50 @@ +--- +title: Suggested reading +locale: en +publication-date: 2017-03-13 +version: '1.0' +authors: + - constantopoulos-panos +editors: [] +contributors: + - constantopoulos-panos +tags: + - modelling + - workshop +sources: + - dariah +license: cc-by-4.0 +table-of-contents: true +summary: + content: > + A.Olivé (2007), Conceptual Modeling of Information Systems, Springer. + + M. Boman, J. Bubenko Jr., P. Johannesson, B. Wangler (1997), Conceptual + Modelling, Prentice Hall.E. Hyvönen (2012), Publishing and Using Cultural + Heritage Linked Data on the Semantic Web, Morgan & Claypool.R. Mizoguchi + (2004), Tutorial on ontological engineering. + https://pdfs.semanticscholar.org/861c/49c728ac875bad0e2027dfc46036df20a3a4.pdfM. + Doerr (2008), “Ontologies”, in DCC Digital Curation Manual. + http://www.dcc.ac.uk/resources/curation-reference-manual/completed-chapters/ontologiesCIDOC + CRM Version 6.1 (2015), Introduction, pp. vii - + xx, + http://www.cidoc-crm.org/sites/default/files/cidoc_crm_version_6.1.pdf + Dominic Oldman and CRM Labs (2014), The CIDOC Conceptual Reference Model + (CIDOC-CRM): PRIMER (edited by Donna Kurtz), + http://www.cidoc-crm.org/docs/CRMPrimer_v1.1.pdf +content-type: training-module +translations: [] +--- +A.Olivé (2007), Conceptual Modeling of Information Systems, Springer. + +M. Boman, J. Bubenko Jr., P. Johannesson, B. Wangler (1997), Conceptual Modelling, Prentice Hall.\ +\ +E. Hyvönen (2012), Publishing and Using Cultural Heritage Linked Data on the Semantic Web, Morgan & Claypool.\ +\ +R. Mizoguchi (2004), Tutorial on ontological engineering.                                                           [https://pdfs.semanticscholar.org/861c/49c728ac875bad0e2027dfc46036df20a3a4.pdf\ +\ +](https://pdfs.semanticscholar.org/861c/49c728ac875bad0e2027dfc46036df20a3a4.pdf)M. Doerr (2008), “Ontologies”, in DCC Digital Curation Manual.                                                [http://www.dcc.ac.uk/resources/curation-reference-manual/completed-chapters/ontologies\ +\ +](http://www.dcc.ac.uk/resources/curation-reference-manual/completed-chapters/ontologies)CIDOC CRM Version 6.1 (2015), Introduction, pp. vii - xx,                                                         [http://www.cidoc-crm.org/sites/default/files/cidoc\_crm\_version\_6.1.pdf  \ +\ +](http://www.cidoc-crm.org/sites/default/files/cidoc_crm_version_6.1.pdf%20)Dominic Oldman and CRM Labs (2014), The  CIDOC Conceptual  Reference  Model (CIDOC-CRM): PRIMER (edited by Donna Kurtz),                                                        [http://www.cidoc-crm.org/docs/CRMPrimer\_v1.1.pdf](http://www.cidoc-crm.org/docs/CRMPrimer_v1.1.pdf) diff --git a/content/en/tags/modelling/index.mdx b/content/en/tags/modelling/index.mdx new file mode 100644 index 0000000000..4a7a31e7e6 --- /dev/null +++ b/content/en/tags/modelling/index.mdx @@ -0,0 +1,3 @@ +--- +name: Modelling +--- \ No newline at end of file diff --git a/content/en/tags/workshop/index.mdx b/content/en/tags/workshop/index.mdx new file mode 100644 index 0000000000..c73418191b --- /dev/null +++ b/content/en/tags/workshop/index.mdx @@ -0,0 +1,3 @@ +--- +name: Workshop +--- \ No newline at end of file diff --git a/lib/content/mdx/components.tsx b/lib/content/mdx/components.tsx index 8b2d8c6278..8f40a133b5 100644 --- a/lib/content/mdx/components.tsx +++ b/lib/content/mdx/components.tsx @@ -1,3 +1,5 @@ +import type { ReactNode } from "react"; + import { Callout } from "@/components/content/callout"; import { Diagram, DiagramCaption, DiagramCodeBlock } from "@/components/content/diagram"; import { Disclosure } from "@/components/content/disclosure"; @@ -48,6 +50,141 @@ export const components = { Tabs, Video, VideoCard, + + /** + * DARIAH-teach components. + * + * Most of these should be dropped in another transform step for the actual content migration. + */ + Page(props: Readonly<{ children: ReactNode; id: string; moduleId: string }>): ReactNode { + const { children } = props; + + return children; + }, + PageTitle(_props: Readonly<{ children: ReactNode }>): ReactNode { + // const { children } = props; + + // TODO: Avoid multiple h1 elements. + // return

{children}

; + + // FIXME: currently titles are duplicated in markdown + return null; + }, + PageIntro(props: Readonly<{ children: ReactNode }>): ReactNode { + const { children } = props; + + // eslint-disable-next-line tailwindcss/no-custom-classname + return
{children}
; + }, + PageContent(props: Readonly<{ children: ReactNode }>): ReactNode { + const { children } = props; + + return children; + }, + Resource( + props: Readonly<{ + children: ReactNode; + title: string; + id: string; + moduleId: string; + files: Array<{ file: string }>; + }>, + ): ReactNode { + const { files } = props; + + return ( + + ); + }, + IframeElement(props: Readonly<{ w: number; h: number; alt: string; src: string }>): ReactNode { + const { src } = props; + + if (src.startsWith("https://www.youtube.com/embed/")) { + const id = new URL(src).pathname.split("/").pop(); + + if (id != null && id !== "") { + return