ISWC 2024 Dataspecer Demo

This page is a landing page for the ISWC 2024 Demo Towards Authoring of Vocabularies and Application Profiles using Dataspecer.

Dataspecer source code is on GitHub, the demo instance is running from the iswc2024 branch.

In our demo instance, you can try building your own vocabulary and application profile, or you can follow our Demo scenario described below.

Go to the demo instance

Alternatively, you can watch a video of us going through the scenario.

Demo scenario

The demo scenario consists of three parts. For the first part, we are in the role of Alice, who wants to create an RDFS-based vocabulary and publish it on the Web, including its human-readable documentation. For the sake of reusability, a vocabulary is just a list of classes and properties defined in the vocabulary, with to specific application context presumed.

For the second part, we are in the role of Bob, who wants to create an application profile, describing a specific usage context, combining terms from different vocabularies, adjusting names, definitions and usage notes to the specific context of the application profile, defining cardinalities of relationships etc.

For the third part, Carol creates an application profile of an application profile, further adjusting usage description of some of the concepts to her context.

Note that our running example, the W3C Data Catalog Vocabulary (DCAT), combines both a vocabulary (terms definitions) and a default application profile (e.g. specifies dcterms:title label to be title even though the original is Title).

Part I - Vocabulary Creation and Publication

For this scenario, we will create a subset of the W3C Data Catalog Vocabulary (DCAT) from scratch. You can open the existing DCAT specification as a source of labels and definitions. Also, you can see the result directly.

  1. Go to demo instance and click on the Project Wizard button.
  2. Click on Vocabulary and fill in
    1. Name: “DCAT”
    2. Description: “DCAT in Dataspecer”
    3. Base IRI http://www.w3.org/ns/dcat#
  3. Click on the Create button, which will take you to the graphical vocabulary editor.
  4. Create new classes with IRIs, labels and definitions (optional) by clicking on Add a new class button in the left hand part of the screen, or alternatively by holding left alt and click on the canvas.
    1. dcat:Resource, Cataloged Resource, Resource published or curated by a single agent.
    2. dcat:Catalog, Catalog, A curated collection of metadata about resources.
    3. dcat:Dataset, Dataset, A collection of data, published or curated by a single agent, and available for access or download in one or more representations.
    4. dcat:Distribution, Distribution, A specific representation of a dataset.
    5. dcat:Role, Role, A role is the function of a resource or agent with respect to another resource, in the context of resource attribution or resource relationships.
  5. Specify that dcat:Catalog is a subclass of dcat:Dataset and dcat:Dataset is a subclass of dcat:Resource by dragging a connection from an s port of the subclass to the t port of the superclass and choosing the generalization connection type.
  6. Now we want to specify that dcat:Role is subclass of skos:Concept - a class from a different vocabulary
    1. SKOS does not have a machine readable representation linked from the spec, we need to find it first. From the references, we can see that it is located at http://www.w3.org/TR/skos-reference/skos.rdf. However, this location does not support CORS, which is required to read the file from the browser. So we use our cache at https://datagov-cz.github.io/cache-slovniku/skos.rdf.
    2. Click on the +model button in the model catalog in the top left part of the screen and insert https://datagov-cz.github.io/cache-slovniku/skos.rdf.
    3. Add skos:Concept to the canvas by clicking on 🕶️ next to it in the project browser in the left part of the screen.
    4. Drag the generalization from dcat:Role to skos:Concept - this shows reuse of external vocabularies.
  7. Create new DCAT attribute (OWL datatype property) with IRIs, labels, definitions (optional) by double-clicking on the domain class and selecting ✏️ Modify, then ➕ add attribute.
    1. on Dataset: dcat:temporalResolution, temporal resolution, Minimum time period resolvable in the dataset., range: xsd:duration
    2. click on ✅ add to save the attribute and ✅ modify to save the class. The attribute shows up on the canvas.
  8. Create new DCAT relationships (OWL object properties) with IRIs, labels, definitions (optional), domains and ranges by dragging a connection and choosing the Association type
    1. dcat:Catalogdcat:dataset –> dcat:Dataset, dataset, A dataset that is listed in the catalog.
    2. dcat:Datasetdcat:distribution –> dcat:Distribution, distribution, An available distribution of the dataset.
  9. Now we add relationships with range specified by existing vocabulary. First we need to import the existing vocabularies, and add the range classes to canvas, so that we can drag the relationship to them.
    1. Add RDFS vocabulary: + model, our RDFS cache: https://datagov-cz.github.io/cache-slovniku/rdfs.ttl
    2. Add rdfs:Resource to canvas
    3. dcat:Distributiondcat:accessURL, –> rdfs:Resource, access URL, A URL of the resource that gives access to a distribution of the dataset. E.g., landing page, feed, SPARQL endpoint.
    4. Add skos:ConceptScheme to canvas
    5. Add dcat:Catalogdcat:themeTaxonomy –> skos:ConceptScheme, themes, A knowledge organization system (KOS) used to classify the resources documented in the catalog (e.g., datasets and services).
    6. Add dcat:Resourcedcat:theme –> skos:Concept, theme/category, here the IRI autosuggestion will not be correct due to the ‘/’ char
    7. And we specify a subproperty relation: dcat:theme rdfs:subPropertyOf dcterms:subject
      1. Import dcterms from our cache https://datagov-cz.github.io/cache-slovniku/dublin_core_terms.ttl using + model
      2. Doubleclick on the theme/category relationship on canvas, or the ✏️ button next to it in the relationships tab of the project browser on the left
      3. ➕ add generalization
      4. choose Subject and click on ✅ add and ✅ modify
  10. Now we have our vocabulary with classes, properties, subclasses and subproperties and pointing to terms from external vocabularies ready to be published.
  11. Click on 💾pkg & 👋 in the top toolbar to get back to the specification manager.
  12. Click on the three-dot menu by the current project and 📄Show documentation to preview the specification.
    • Optional: some manual metadata and texts are missing. They can be added in the Respec template by clicking the three-dot menu and Modify documentation template - Respec configuration knowledge is required here. You may try replacing the var respecConfig like so:
var respecConfig = {
  specStatus: "unofficial",
  editors: [
    { name: "John Editor", company: "John's Business" },
    { name: "Jane Editor"}
    ],
  github: "https://github.com/mff-uk/demo-specifications/",
  shortName: "todo",
  //xref: "web-platform",
  //group: "my-working-group",
};
  1. Note the Attachments chapter where the vocabulary is available as an RDFS/OWL file, and note the source code of the spec, which includes a machine readable representation of the spec, including the reused vocabularies and generated artifacts described by the Data Specification Vocabulary.
  2. Click on the three-dot menu and 📁 Export specification to download a ZIP file, which can be extracted and published e.g. in GitHub pages. We did that in https://mff-uk.github.io/demo-specifications/test1/.

Part II - Application Profile

Now Bob wants to create the DCAT “Default application profile” - point to classes and properties both newly defined in DCAT, and from external vocabularies to be used in the DCAT context, set cardinalities and usage notes. Here we use terms class profile, attribute profile and relationship profile to denote “usage of class, attribute or relationship in the current context” where we can adjust names, definitions and usage notes without affecting the original RDFS/OWL based vocabulary. Also, you can see the result directly.

We will use the following notation: DCAT-DAP::dcat:Catalog means dcat:Catalog class profile in an application profile called DCAT-DAP.

We will extensively use the 🧲 button for creating profiles from terms from vocabularies.

  1. Go to demo instance and click on the Project Wizard button.
  2. Click on Application profile and fill in
    1. URL of the vocabulary specification to be profiled. Either use the URL of the specification published in Part I, or use ours: https://mff-uk.github.io/demo-specifications/test1/
    2. Name: “DCAT-DAP”
    3. Description: “DCAT Default Application Profile”
    4. Base IRI https://example.org/dcat-dap#
  3. Click on the Create button, which will take you to the graphical editor. You can see the vocabularies used by DCAT already loaded in the project browser.
  4. Create class profiles of the following classes using the 🧲 button next to the class name.
    1. Add DCAT-DAP::dcat:Resource (Cataloged Resource) class profile to serve as domain of future property profiles
    2. Add DCAT-DAP::dcat:Distribution class profile to serve as domain of future property profiles
    3. Add DCAT-DAP::dcat:Dataset class profile
    4. Add DCAT-DAP::dcat:Catalog class profile
    5. Import FOAF using +model from our cache https://datagov-cz.github.io/cache-slovniku/foaf.ttl
    6. Add class profile DCAT-DAP::foaf:Agent from FOAF
  5. Create attribute profiles - here, we create two different attribute profiles of the same attributes title and description for two contexts. Resource and Distribution. In each, we need a slightly different title and description, plus specify the profile’s domain and range to be the class profiles. This is what is not possible to do systematically with other approaches, while avoiding subclasses and subproperties. We create the attribute profiles using the 🧲 button in the attributes tab of the project browser on the left hand side.
    1. DCAT-DAP::dcat:Resource (was owl:Thing) – DCAT-DAP::dcterms:title –> rdfs:Literal, cardinality 1..*, name resource title (was Title) - domain needs to be changed in profile (tick checkbox), set to the class profile of dcat:Resource, and cardinality needs to be changed in profile and set. Range is left as it was.
    2. DCAT-DAP::dcat:Resource (was owl:Thing) – DCAT-DAP::dcterms:description –> rdfs:Literal (was undefined), name resource description was Description, cardinality 0..*
    3. DCAT-DAP::dcat:Distribution (was owl:Thing) – DCAT-DAP::dcterms:title –> rdfs:Literal, cardinality 1..*, name distribution title (was Title) - domain needs to be changed in profile (tick checkbox), set to the class profile of dcat:Resource, and cardinality needs to be changed in profile and set. Range is left as it was.
    4. DCAT-DAP::dcat:Distribution (was owl:Thing) – DCAT-DAP::dcterms:description –> rdfs:Literal (was undefined), name distribution description was Description, cardinality 0..*
  6. Create relationship profiles using 🧲 in the relationships tab of the project browser
    1. DCAT-DAP::dcat:CatalogDCAT-DAP::dcterms:publisher –> DCAT-DAP::foaf:Agent - definition An entity responsible for making the catalog available. (was An entity responsible for making the resource available.), cardinality 1..1
    2. DCAT-DAP::dcat:DatasetDCAT-DAP::dcat:distribution –> DCAT-DAP::dcat:Distribution - domain and range changed to profiles, cardinality 0..*
  7. Now Bob has his application profile and can again publish it somewhere as Alice did before with the DCAT vocabulary.
  8. Click on 💾pkg & 👋 in the top toolbar to get back to the specification manager.
  9. Click on the three-dot menu by the current project and 📄Show documentation to preview the specification.
    • Optional: some manual metadata and texts are missing. They can be added in the Respec template by clicking the three-dot menu and Modify documentation template - Respec configuration knowledge is required here. You may try replacing the var respecConfig like so:
var respecConfig = {
  specStatus: "unofficial",
  editors: [
    { name: "John Editor", company: "John's Business" },
    { name: "Jane Editor"}
    ],
  github: "https://github.com/mff-uk/demo-specifications/",
  shortName: "todo",
  //xref: "web-platform",
  //group: "my-working-group",
};
  1. Note the Attachments chapter where the application profile is available as an Data specification vocabulary (DSV) file, and note the source code of the spec, which includes a machine readable representation of the spec, including the reused vocabularies and generated artifacts.
  2. Click on the three-dot menu and 📁 Export specification to download a ZIP file, which can be extracted and published e.g. in GitHub pages. We did that in https://mff-uk.github.io/demo-specifications/test1-dap/.

Part III - Application Profile of an Application Profile

In the final part of the demo, Carol wants to create an application profile, e.g. DCAT-AP, of the DCAT Default Application Profile, and further change some definitions to better suit her context. For instance, she wants to say something very specific about dcat:Dataset and she wants to force datasets to have at least one distribution in her profile. Also, you can see the result directly.

  1. Go to demo instance and click on the Project Wizard button.
  2. Click on Application profile and fill in
    1. URL of the vocabulary specification to be profiled. Either use the URL of the specification published in Part II, or use ours: https://mff-uk.github.io/demo-specifications/test1-dap/
    2. Name: “DCAT-AP”
    3. Description: “DCAT Application Profile”
    4. Base IRI https://example.org/dcat-ap#
  3. Click on the Create button, which will take you to the graphical editor. You can see the vocabularies used by DCAT and DCAT-DAP, and the entity profiles (in the profiles tab of the browser) from DCAT-DAP already loaded in the project browser.
  4. Create class profiles of the following classes using the 🧲 button next to the class name.
    1. Add DCAT-AP::dcat:Dataset class profile of DCAT-DAP::dcat:Dataset, DCAT-AP Special Dataset
    2. Add DCAT-AP::dcat:Distribution class profile of DCAT-DAP::dcat:Distribution, DCAT-AP Special Distribution
  5. Create relationship profile DCAT-AP::dcat:DatasetDCAT-AP::dcat:distribution –> DCAT-DAP::dcat:Distribution, cardinality 1..*
  6. Click on 💾pkg & 👋 in the top toolbar to get back to the specification manager.
  7. Click on the three-dot menu by the current project and 📄Show documentation to preview the specification.
  8. Note that again, you can click through the Profile of link of DCAT-AP::dcat:distribution to get to the documentation of DCAT-DAP::dcat:distribution, and again to get to definition dcat:distribution in the DCAT vocabulary specification, navigating the application profile hierarchy.
  9. Click on the three-dot menu and 📁 Export specification to download a ZIP file, which can be extracted and published e.g. in GitHub pages. We did that in https://mff-uk.github.io/demo-specifications/test1-ap/.