<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="en">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">SKOS-Utils: Developing and Checking SKOS Knowledge Graphs (Tool Presentation)</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Joachim</forename><surname>Baumeister</surname></persName>
							<affiliation key="aff0">
								<orgName type="institution">University of Würzburg</orgName>
								<address>
									<country key="DE">Germany</country>
								</address>
							</affiliation>
							<affiliation key="aff1">
								<orgName type="institution">denkbares GmbH</orgName>
								<address>
									<country key="DE">Germany</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Valentin</forename><surname>Roß</surname></persName>
							<affiliation key="aff0">
								<orgName type="institution">University of Würzburg</orgName>
								<address>
									<country key="DE">Germany</country>
								</address>
							</affiliation>
							<affiliation key="aff1">
								<orgName type="institution">denkbares GmbH</orgName>
								<address>
									<country key="DE">Germany</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">SKOS-Utils: Developing and Checking SKOS Knowledge Graphs (Tool Presentation)</title>
					</analytic>
					<monogr>
						<idno type="ISSN">1613-0073</idno>
					</monogr>
					<idno type="MD5">EBEBF6CD7E5115FF6E98BBB5A8E84F5E</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2025-04-23T16:20+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<textClass>
				<keywords>
					<term>knowledge engineering</term>
					<term>ontologies</term>
					<term>mindmaps</term>
					<term>quality assessment</term>
					<term>evaluation</term>
					<term>knowledge bases</term>
				</keywords>
			</textClass>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>We introduce the tool suite SKOS-Utils for the development and quality assessment of SKOS vocabularies (Simple Knowledge Organisation System). SKOS is a wide-spread standard for organizing hierarchical knowledge structures, that uses RDF as basic data model. SKOS-Utils provides converters for spreadsheets and mindmaps in order to facilitate the bottom-up development of SKOS vocabularies. A suite of quality checks is used for testing the created vocabularies.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="en">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1.">Introduction</head><p>By now, SKOS (Simple Knowledge Organization System) is a well-accepted W3C standard for defining (hierarchical) knowledge structures based on the RDF model <ref type="bibr" target="#b0">[1]</ref>. Many vendors support the definition, storage, and use of SKOS schemes. For example, industrial applications implement the SKOS standard for the representation and interchange of master data, e.g., component structures, functional schemes, and parts list hierarchies.</p><p>The wide use of SKOS is justified by the simplicity of the underlying data model. The center of the SKOS data model defines skos:Concept to represent an element in the knowledge structure. Instances of skos:Concept are organized in a hierarchy by defining parent/child relations. In SKOS, these relations are generally named skos:broader and skos:narrower for a parent and child relationship, respectively. Figure <ref type="figure" target="#fig_1">1</ref> depicts an example of the SKOS concept Frame having a number of labels defined by using the standard SKOS properties. For industrial applications, these relations can be subclassed as for instance subComponentOf, partOf, and hasFunction.</p><p>Besides the hierarchical relationship in the knowledge organization structure, the labeling of the concepts is a central feature of SKOS. Lexical labels with different semantics are introduced: The property skos:prefLabel defines the relation for the preferred label of the concept, whereas uses of skos:altLabel point to alternative lexical labels of the concept. As a third property skos:hiddenLabel stores lexical labels of the concept, that are usually not shown to the user, e.g., typical misspellings and internal identifiers. The core standard of SKOS defines the properties shown above. With the extension SKOS-XL (eXtension for Labels), the properties Frame "Frame"@en, "Rahmen"@de "Chassis"@en, "Gestell"@de "FR_owe_jb" are expanded so that concepts can point to first class instances of lexical entities <ref type="bibr" target="#b0">[1]</ref>. Then, a label can store additional information besides its literal form, e.g., relations to other labels and (domain specific) provenance information. Figure <ref type="figure" target="#fig_1">1</ref> shows the use of SKOS-XL preferred labels for the concept Wheel.</p><p>Concepts are grouped in a skos:ConceptScheme by using the skos:inScheme property. The entry into a concept scheme is represented by using the property skos:hasTopConcept, which points to the topmost concepts of this scheme. See the ConceptScheme instance BSCHm in Figure <ref type="figure" target="#fig_1">1</ref>. Please note, that there is no constraint, that only one top concept must exist.</p><p>When not directly maintained in a SKOS data model but in a proprietary system, the data is often converted to SKOS representation for interchange in the IT landscape. For instance, master data located originally in an ERP system is exported as SKOS data for the interchange with a knowledge graph application. But also for the creation of new structures the SKOS standard has shown to be beneficial. Here, the concepts of the structure are defined in standard applications like mindmapping tools or even spreadsheet editors. After the initial creation phase, these structures are later transferred to a graph database or ERP system. With these use cases we experienced, that SKOS data is often defined without tools checking for validity or general quality.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1.1.">Contribution</head><p>This paper introduces the modular open-source tool suite SKOS-Utils. The suite provides a collection of Python scripts that help during the development of SKOS vocabularies and the continuous quality assessment of the resulting knowledge graphs.</p><p>There exist various applications tailored to the development of SKOS vocabularies. While these tools offer a wide range of functionalities and benefits for professional authors, the tools lack intuitivity needed for the first steps of developing a new vocabulary, especially for domain specialists not familiar with the engineering of ontologies. We experienced the use of already known tools more accessible for domain specialists, e.g., using spreadsheet editors and mindmapping tools. That way, we claim that it is more productive to start with such simple applications for the initial structure before switching to tailored tools for supporting the life cycle of the created vocabulary.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1.2.">Related Work</head><p>Quality Assessment As a primary document besides the W3C standards, Baker et al. <ref type="bibr" target="#b1">[2]</ref> introduce the main components of SKOS and the design decisions made. They also state an initial set of integrity conditions for SKOS data. Mader et al. <ref type="bibr" target="#b2">[3]</ref> present a collection of quality issues that can occur in SKOS vocabularies. The structured approach is implemented in the tool qSKOS and they describe the analysis of many openly available vocabularies, such as DBpedia, AGROVOC, and MeSH. Suominen and Mader <ref type="bibr" target="#b3">[4]</ref> extend this approach by also providing correction heuristics for a part of the presented anomalies.</p><p>Development Busse <ref type="bibr" target="#b4">[5]</ref> introduces an approach to transform FreeMind Mindmaps into RDF ontologies on a syntactic level by using the XSLT scripting language. Lacasta et al. <ref type="bibr" target="#b5">[6]</ref> describe a tool for the development and visualization of SKOS data especially focussed on digital libraries. While having a strong support for typical librarian tasks the tool is build mainly as a monolithic application.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.">Methods</head><p>The suite SKOS-Utils offers a collection of scripts for developing and checking SKOS data. Due to the intrinsic nature of incompleteness<ref type="foot" target="#foot_0">1</ref> , the suite is designed to be easily extended. We distinguish the parts development and checking, whereas each part offers a variety of (extensible) modules for the specific task.</p><p>An extensive discussion of methods for checking vocabularies can be found in <ref type="bibr" target="#b2">[3,</ref><ref type="bibr" target="#b3">4]</ref>. We describe the particular modules in the following in more detail. Please note, that the suite is under continuous development and thus we can only describe the current state of implementation.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.1.">Development</head><p>The development part provides the standardized SKOS RDF data model as recommended by the W3C <ref type="bibr" target="#b0">[1]</ref>. We can simply switch between the well-known RDF syntax definitions XML, Turtle, and JSON-LD. The suite provides scripts to bridge this data model from/to the mindmapping application XMind<ref type="foot" target="#foot_1">2</ref> , to Graphviz<ref type="foot" target="#foot_2">3</ref> , and from/to the spreadsheet application MS-Excel<ref type="foot" target="#foot_3">4</ref> , see Figure <ref type="figure" target="#fig_2">2</ref>. That way, we can develop SKOS structures using this tools in a roundtrip engineering approach. XMind and Excel, respectively, are popular for creating (hierarchical) structures in industry. For quick visualization purposes, also an ASCII export is provided, that prints basic information of the SKOS hierarchy as a dashed-tree into a text file.  Mindmaps In Figure <ref type="figure" target="#fig_3">3</ref> we see an example XMind structure of an exemplary bike definition. Basically, mindmaps allow for the definition of nodes and their hierarchical relationship (general parent-children). This relation is mapped to the skos:broader and skos:narrower properties, respectively. Further common relations in SKOS are represented by using the 'note' attribute of nodes. When one wants to define preferred labels (skos:prefLabel) or alternative labels (skos:altLabel), these are written into the note. By convention, the user defines those properties in separate lines, where each line needs to start with a @ character. All lines not starting with a @ are handled as standard comments and are transferred into a skos:note property. In the example in Figure <ref type="figure" target="#fig_3">3</ref> we see the note window for the node Rear brakes.</p><formula xml:id="formula_0">Engineering Quality Assessment … … … … Quality Checks XMind Excel Text SKOS RDF X M in d 2 S K O S S K O S 2 X M in d X L S2 SK O S SK O S2 X L S SKOS2ASCII Graphviz SKOS2GRAPHVIZ</formula><p>When we apply the script XMind2SKOS of SKOS-Utils a SKOS representation in RDF is generated. The following RDF in Listing 1 is an excerpt for the node Rear brakes (here in turtle syntax). Please note, that unique URIs are generated for each concept since we cannot rely on the unique names in the mindmap. The inverse script SKOS2Xmind converts RDF data to an XMind data format.</p><p>Listing 1: Sample output of a SKOS concept.</p><p>ex : C_5b3154 a skos : Concept ; skos : prefLabel " Hinterradbremse " @de , " Rear brake " @en ; skos : broader ex : C_02b4cc ; skos : inScheme ex : Functions ; skos : note " @order : 10" , " @uuid : C_5b3154 " , " @xmind_name : \" Rear brakes \"" , " The correct function of a rear brake is important for save driving !" ; rdfs : label " Brake " @en ; skos : altLabel " Rear wheel brake " @en .</p><p>Graphviz SKOS-Utils provides a converter to the dot format of Graphviz. By default, the converter prints the SKOS concepts as nodes. The node label is defined by the preferred label of a specified language. Furthermore, the class type and the preferred labels can be printed in the node. Also, you can define which properties should be drawn in the graph, additionally. Graphviz provides different layout strategies and output formats, such as PDF, PNG, and SVG. Figure <ref type="figure" target="#fig_4">4</ref> depicts the example vocabulary rendered by Graphviz.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Spreadsheets</head><p>The bridge modules SKOS2XLS and XLS2SKOS of SKOS-Utils transfer SKOS RDF to and from MS-Excel spreadsheets. In the spreadsheet representation, each SKOS concept is located in a separate row, whereas the SKOS properties are represented by the respective columns. Additional properties denoted by @ are exported as single columns. In Figure <ref type="figure" target="#fig_5">5</ref>, a MS-Excel sheet is depicted, which was generated from the RDF file and the XMind structure in Figure <ref type="figure" target="#fig_3">3</ref>, respectively. The hierarchy is represented in level notation, i.e., column Level denotes the hierarchical position of the SKOS concept. A concept 𝐶 𝑖 with a level 𝑖 describes the child of a concept 𝐶 𝑖−1 when the parent 𝐶 𝑖−1 occurs immediately before concept 𝐶 𝑖 . For example, Figure <ref type="figure" target="#fig_5">5</ref> shows the levels in Column A, where concepts Frame and Wheel are children of Bike. This kind of hierarchy level definition is common for exports/imports into ERP systems such as SAP.  </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.2.">Quality Assessment</head><p>For the quality assessment a suite of configurable checks is executed as a pipeline. The results for each check are collected and reported after finishing the entire pipeline. We provide two alternative interfaces for the implementation of checks, i.e., as SPARQL queries <ref type="bibr" target="#b6">[7]</ref> and as Python classes. We first introduce the definition of a quality check as a SPARQL query and then show an exemplary implementation of a check in Python.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Check Definition</head><p>The current state of SKOS-Utils brings a number of checks, that are usable for the quality assessment of SKOS data. The extension of the suite is under development.</p><p>We provide two interfaces to implement project specific checks: 1) New checks basically defined by a SPARQL query are implemented by extending the python class StructureTestInterfaceSPARQL. 2) Checks navigating the graph object structure are implemented by extending the python class StructureTestInterfaceNavigate.</p><p>Listing 2 shows an example of the SPARQL approach and implements the check SinglePrefLabelCheckerSPARQL. It looks for deficient SKOS concepts that have more than one preferred label for the same language. For the sake of simplicity we omitted the query for retrieving SKOS-XL prefLabel occurrences, that is also part of the actual implementation.</p><p>Listing 2: Check definition SinglePrefLabelChecker implemented as SPARQL query.</p><p>class SinglePrefLabelCheckerSPARQL ( StructureTestInterfaceSPARQL ) :</p><p>""" Check whether every concept has at most one prefLabel for each language . Considers prefLabels defined in standard SKOS . """ @property def status ( self ) : return " Error " def message ( self , result_df ) : ... @property def query ( self ) : return """ SELECT DISTINCT ? concept WHERE { { ? concept skos : prefLabel ? label1 , ? label2 . } FILTER ( lang (? label1 ) = lang (? label2 ) &amp;&amp; ? label1 != ? label2 ) } GROUP BY ? concept """</p><p>A check is basically defined by overwriting three methods: The method status signifies the escalation level in the case of a found deficiency. The levels info, warning, and error are possible. The method message defines the information given to the user in case of found deficiencies. The actual logic for finding deficiencies is specified in the method query. Here, a SPARQL query for finding the wanted deficiencies needs to be given. In the standard case, the check does not report an error/warning, when the query returns no results. All results returned by the query, in turn, are interpreted as deficiencies.</p><p>Listing 3 shows the same method as native implementation. Native implementations navigate over the graph data model and try to find the deficiencies programmatically. By interfacing the class StructureTestInterfaceNavigate we usually only need to implement the method find_concepts() with the logic for finding the corresponding deficient concepts. Implementation note: Checks defined by SPARQL queries come with the advantage of easy definition. Additionally, SPARQL is a well-accepted W3C standard that is widely used. That way, SPARQL allows for a quick and declarative addition of new checks. However, the disadvantage of that approach is that the execution performance of SPARQL queries is significantly worse than an implementation working directly on the graph object model.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Pipeline Definition</head><p>The quality assessment of SKOS data is performed by defining a pipeline of quality checks. A configuration file defines the pipeline in YAML syntax. The pipeline execution script SKOSQualityChecker performs the actual assessment of the SKOS data using this configuration file. Listing 4 shows an exemplary configuration for the quality assessment: -LooseConceptIdentifier -SchemeCoherenceChecker -SinglePrefLabelChecker -...</p><p>The YAML configuration describes the SKOS RDF file under analysis (input), the name of the results file (output). In the section (tests) the actual pipeline of tests is defined. Further, we can toggle whether we want to write a result output and whether we want to log the date/times of the tests. That way, quality assessments are easily executable the headless way, for example, as part of a nightly continuous integration step. The results of an assessment step can be persisted into an Excel file for subsequent analysis.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.">Case Study</head><p>SKOS-Utils is implemented as a Python script collection. For the access to RDF vocabularies we use the popular library rdflib <ref type="foot" target="#foot_4">5</ref> . For the access to Excel files we use the pandas framework <ref type="foot" target="#foot_5">6</ref> .</p><p>In the following we report the experiences we made during the use of the development scripts in an industrial project. We further demonstrate the implementation of the quality assessment part by reporting the runtime and findings for a collection of known SKOS vocabularies.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.1.">Development with SKOS-Utils</head><p>In the context of a customer project we started the development of a functional structure of machines in 2022. The functional structure was created on the green field initialized by a number of workshops with domain specialists from different areas, e.g., engineering, safety, and after sales.</p><p>Due to the collaborative set-up of the workshop the use of a mindmapping improved the intuitive creation and change of the structure. We used the bridge to the spreadsheet application for subsequent and iterative analyses by the domain specialists in their own areas. These analyses mainly covered the alignment of existing structures to the newly developed structure. Here, a spreadsheet effectively helped the alignment process. The development of the functional structure is still in progress.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.2.">Quality Assessment of SKOS Vocabularies</head><p>Data Sets We selected a collection of popular SKOS vocabularies in order to demonstrate the performance and usability of the developed SKOS-Utils. The DemoBike vocabulary is a selfcreated SKOS structure describing an exemplary bicycle configuration. Here, example defects are included to test the functionality of the SKOS-Utils implementation. The EuroVoc<ref type="foot" target="#foot_6">7</ref> vocabulary is a multi-lingual thesaurus created and managed by the European Union publications office and describes terms in languages of EU countries and EU-candidate countries. The AGROVOC vocabulary is developed and coordinated by the Food and Agriculture Organization (FAO) of the United Nations <ref type="bibr" target="#b7">[8]</ref>. As stated at its homepage "AGROVOC (is) a valuable tool for data to be classified homogeneously, facilitating interoperability and reuse. " <ref type="foot" target="#foot_7">8</ref> The UNESCO Thesaurus<ref type="foot" target="#foot_8">9</ref> (UNESCO THES) defines terms in the domain of education, culture, natural sciences, social and human science. The terms are used as metadata for document annotation.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Results</head><p>We used the introduced data sets with the check implementations of SKOS-Utils. The aim of this experiments was to measure the application runtime and the general functionality of the implementation. For the experiments we used a Macbook Pro M1 Max with 32GB RAM (Python 3.11). Table <ref type="table" target="#tab_2">2</ref> shows runtime numbers performing the particular checks. For each check the runtime of the navigate implementation is shown and the corresponding SPARQL implementation, when available ("-" otherwise). The runtime numbers in Table <ref type="table" target="#tab_2">2</ref> are formatted as sec:ms, whereas sec is omitted, when the check only had a milliseconds runtime. After the runtimes the count of found anomalies is given. We see that accessing the SKOS graph by using SPARQL is significantly larger than accessing the graph via the navigation features of the library. This observation is also made for other programming libraries and therefore not surprising.</p><p>When looking at the findings in the table, the BikeDemo vocabulary shows findings for all checks. This ist not surprising, since the knowledge base is used as test for all checks, The vocabulary AGROVOC has a high number of incomplete language coverage: The vocabulary defines in total 58 languages but mostly uses for the single concepts only about 20 languages. For the UNESCO thesaurus 35 concepts with incomplete language coverage are detected, e.g., not all concepts define preferred labels for Russian language.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.">Conclusions</head><p>We introduced the tool suite SKOS-Utils as a collection of useful Python scripts for the development and quality assessment of SKOS vocabularies. SKOS became one industrial standard for creating and interchanging knowledge organization structures. Due to the heterogenous infrastructures of existing IT landscapes in industries, a flexible and open tool suite is necessary to interweave SKOS vocabularies into existing applications.</p><p>The described SKOS-Utils is at the beginning of its implementation. While the available scripts have proven to be useful in daily development and testing of knowledge bases, there are limitations so far that are tasks for future work. For the development part, only the most important SKOS properties are converted between the applications and RDF. For the quality assessment we need to develop more checks to be included in the suite. Also, there is a strong limitation in the reasoning support of SKOS-Utils. The underlying Python library rdflib does not support reasoning of RDF ontologies. For example, instances of SKOS concepts need to be defined explicitly (ex:A rdf:type skos:Concept) and not as instances of sub-classes of SKOS concepts. This also holds for other SKOS properties and classes. That way, it is required that instances under investigation need to be explicitly defined as SKOS elements. In the future, we are planning to include reasoning support for SKOS-Utils to remove this requirement.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head></head><label></label><figDesc>sk o s: h id d e n L a b e l sk o s: p re fL ab el skos:altLabel</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head>Figure 1 :</head><label>1</label><figDesc>Figure 1: Example of SKOS concepts with preferred, alternative, and hidden labels by using standard SKOS and SKOS-XL.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_2"><head>Figure 2 :</head><label>2</label><figDesc>Figure 2: Overview of SKOS-Utils with scripts for the development and the quality assessment of SKOS data.</figDesc><graphic coords="4,89.29,352.52,416.68,205.06" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_3"><head>Figure 3 :</head><label>3</label><figDesc>Figure 3: Example of a XMind structure with SKOS properties defined as notes of hierarchy nodes.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_4"><head>Figure 4 :</head><label>4</label><figDesc>Figure 4: Graphviz layout as PDF output.</figDesc><graphic coords="6,89.29,357.55,416.69,155.30" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_5"><head>Figure 5 :</head><label>5</label><figDesc>Figure 5: Example of an Excel sheet generated from the SKOS RDF structure above.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_6"><head>Listing 4 :</head><label>4</label><figDesc>Sample definition of a check pipeline configuration. input : tests / Testdata / testfile . rdf output : test_results add_datetime_to_output : True write_results_to_excel : True tests :</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_0"><head>Listing 3 :</head><label>3</label><figDesc>Check definition SinglePrefLabelChecker implemented by navigating the graph object model.</figDesc><table><row><cell>class SinglePrefLabelChecker ( StructureTestInterfaceNavigate ) :</cell></row><row><cell>@property</cell></row><row><cell>def status ( self ) :</cell></row><row><cell>...</cell></row><row><cell>def message ( self , result ) :</cell></row><row><cell>...</cell></row><row><cell>def find_concepts ( self , graph ) :</cell></row><row><cell>bad_concepts_list = []</cell></row><row><cell>for concept , p , o in graph . triples (( None , RDF . type , SKOS .</cell></row><row><cell>Concept ) ) :</cell></row><row><cell>labels = self . all_pref_labels ( concept , graph )</cell></row><row><cell>if self . duplicate_labels ( labels ) :</cell></row><row><cell>bad_concepts_list . append ( concept )</cell></row><row><cell>return bad_concepts_list</cell></row></table></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_1"><head>Table 1</head><label>1</label><figDesc>Quantities of the used SKOS vocabularies</figDesc><table><row><cell>Name</cell><cell cols="6">#Schema #Concepts #prefLabels #prefLabels XL #Relations #Languages</cell></row><row><cell>BikeDemo (2023-07)</cell><cell>1</cell><cell>13</cell><cell>33</cell><cell>3</cell><cell>118</cell><cell>4</cell></row><row><cell>EuroVoc (v4.17)</cell><cell>129</cell><cell>7,403</cell><cell>202,008</cell><cell>411,242</cell><cell>3,662,023</cell><cell>30</cell></row><row><cell>AGROVOC (2023-06-06)</cell><cell>1</cell><cell>40,983</cell><cell>0</cell><cell>986,077</cell><cell>5,920,997</cell><cell>58</cell></row><row><cell>UNESCO THES (v2)</cell><cell>1</cell><cell>4,408</cell><cell>17,980</cell><cell>0</cell><cell>75,202</cell><cell>4</cell></row></table></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_2"><head>Table 2</head><label>2</label><figDesc>Runtimes of implemented checks in sec:ms (sec omitted when faster).</figDesc><table><row><cell>Name</cell><cell>BikeDemo</cell><cell>EuroVoc</cell><cell>AGROVOC</cell><cell cols="2">UNESCO THES</cell></row><row><cell>SinglePrefLabel</cell><cell>002 / -</cell><cell>2 01:493 / -</cell><cell>0 04:585 / -</cell><cell>0 062 / -</cell><cell>0</cell></row><row><cell>SchemeCoherence</cell><cell>001 / -</cell><cell>1 00:171 / -</cell><cell>345 00:583 / -</cell><cell>0 073 / -</cell><cell>0</cell></row><row><cell>SchemeIntegrity</cell><cell cols="2">001 / 073 1 00:043 / 00:482</cell><cell>0 00:212 / 01:961</cell><cell>0 023 / 319</cell><cell>1</cell></row><row><cell>TopConceptIdentifier</cell><cell>001 / -</cell><cell>5 00:003 / -</cell><cell>5 00:002 / -</cell><cell>25 035 / 416</cell><cell>1</cell></row><row><cell cols="2">IncompleteLanguageCoverage 023 / -</cell><cell>1 03:238/ -</cell><cell>7,403 09:952 / -</cell><cell>40,983 123 / -</cell><cell>35</cell></row><row><cell>LabelConflict</cell><cell>001 / -</cell><cell>2 00:688 / -</cell><cell>218 00:190 / -</cell><cell>0 088 / -</cell><cell>10</cell></row><row><cell>OrphanConcept</cell><cell cols="2">001 / 011 1 00:209 / 01:042</cell><cell>0 00:803 / 04:150</cell><cell>0 125 / 679</cell><cell>0</cell></row><row><cell>OmittedTopConcepts</cell><cell>001 / -</cell><cell>3 00:064 / -</cell><cell>0 00:250 / -</cell><cell>0 033 / -</cell><cell>0</cell></row><row><cell>SolelyTransitivelyRelatedCon</cell><cell cols="2">001 / 004 2 00:027 / 00:050</cell><cell>0 00:156 / 00:262</cell><cell>0 016 / 031</cell><cell>0</cell></row><row><cell>TopConHavingBroaderCon</cell><cell cols="2">001 / 006 1 00:006 / 00:087</cell><cell>0 00:001 / 00:007</cell><cell>0 004 / 046</cell><cell>0</cell></row><row><cell>CyclicHierarchicalRelation</cell><cell>001 / -</cell><cell>0 00:269 / -</cell><cell>56 00:760 / -</cell><cell>533 131 / -</cell><cell>0</cell></row><row><cell>ValuelessAssociativeRelations</cell><cell>001 / -</cell><cell>4 00:181 / -</cell><cell>221 00:115 / -</cell><cell>1,362 185 / -</cell><cell>1,474</cell></row><row><cell>InvalidLanguageTag</cell><cell>001 / -</cell><cell>1 02:306 / -</cell><cell>0 08:704/ -</cell><cell>0 117 / -</cell><cell>0</cell></row></table></figure>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="1" xml:id="foot_0">Here, we follow the general rule that every new project will have new requirements and additions to existing functionality.</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="2" xml:id="foot_1">https://xmind.app</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="3" xml:id="foot_2">https://graphviz.org</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="4" xml:id="foot_3">https://www.microsoft.com/microsoft-365/excel</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="5" xml:id="foot_4">rdflib: https://rdflib.readthedocs.io</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="6" xml:id="foot_5">pandas: https://pandas.pydata.org</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="7" xml:id="foot_6">EuroVoc: https://op.europa.eu/s/yTkE</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="8" xml:id="foot_7">AGROVOC: https://www.fao.org/agrovoc/</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="9" xml:id="foot_8">UNESCO THES: http://vocabularies.unesco.org/thesaurus</note>
		</body>
		<back>

			<div type="acknowledgement">
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Acknowledgments</head><p>Parts of this work were funded by German Federal Ministry for Economic Affairs and Climate Action under the ZIM program, AiF grant KK5394901GR1 (ISCO project).</p></div>
			</div>

			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<monogr>
		<author>
			<persName><surname>W3c</surname></persName>
		</author>
		<ptr target="http://www.w3.org/TR/skos-reference" />
		<title level="m">SKOS Simple Knowledge Organization System reference</title>
				<imprint>
			<date type="published" when="2009">2009</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<analytic>
		<title level="a" type="main">Key choices in the design of simple knowledge organization system (SKOS)</title>
		<author>
			<persName><forename type="first">T</forename><surname>Baker</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Bechhofer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Isaac</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Miles</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Schreiber</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Summers</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Journal of Web Semantics</title>
		<imprint>
			<biblScope unit="volume">20</biblScope>
			<biblScope unit="page" from="35" to="49" />
			<date type="published" when="2013">2013</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<analytic>
		<title level="a" type="main">Finding quality issues in SKOS vocabularies</title>
		<author>
			<persName><forename type="first">C</forename><surname>Mader</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Haslhofer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Isaac</surname></persName>
		</author>
		<idno type="arXiv">arXiv:1206.1339</idno>
	</analytic>
	<monogr>
		<title level="m">Proceedings of TPDL 2012, Theory and Practice of Digital Libraries</title>
				<meeting>TPDL 2012, Theory and Practice of Digital Libraries</meeting>
		<imprint>
			<date type="published" when="2012">2012</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">Assessing and improving the quality of skos vocabularies</title>
		<author>
			<persName><forename type="first">O</forename><surname>Suominen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Mader</surname></persName>
		</author>
		<idno type="DOI">10.1007/s13740-013-0026-0</idno>
	</analytic>
	<monogr>
		<title level="j">Journal on Data Semantics</title>
		<imprint>
			<biblScope unit="volume">3</biblScope>
			<date type="published" when="2014">2014</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<monogr>
		<title level="m" type="main">Semantische Modelle mit Mindmaps</title>
		<author>
			<persName><forename type="first">J</forename><surname>Busse</surname></persName>
		</author>
		<idno type="DOI">10.1515/9783110312812.115</idno>
		<imprint>
			<date type="published" when="2014">2014</date>
			<publisher>De Gruyter Saur</publisher>
			<biblScope unit="page" from="115" to="127" />
			<pubPlace>Berlin, Boston</pubPlace>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">ThManager: An open source tool for creating and visualizing SKOS</title>
		<author>
			<persName><forename type="first">J</forename><surname>Lacasta</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Nogueras-Iso</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Lopez-Pellicer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Muro-Medrano</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Zarazaga</surname></persName>
		</author>
		<idno type="DOI">10.6017/ital.v26i3.3274</idno>
	</analytic>
	<monogr>
		<title level="j">Information Technology and Libraries</title>
		<imprint>
			<biblScope unit="volume">26</biblScope>
			<biblScope unit="page" from="39" to="51" />
			<date type="published" when="2007">2007</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<monogr>
		<title level="m" type="main">1 recommendation</title>
		<author>
			<persName><surname>W3c</surname></persName>
		</author>
		<ptr target="http://www.w3.org/TR/sparql11-query,2013" />
		<imprint>
			<biblScope unit="volume">1</biblScope>
		</imprint>
	</monogr>
	<note>SPARQL</note>
</biblStruct>

<biblStruct xml:id="b7">
	<analytic>
		<title level="a" type="main">The AGROVOC linked dataset</title>
		<author>
			<persName><forename type="first">C</forename><surname>Caracciolo</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Stellato</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Morshed</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Johannsen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Rajbhandari</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Y</forename><surname>Jaques</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Keizer</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Semantic Web</title>
		<imprint>
			<biblScope unit="volume">4</biblScope>
			<biblScope unit="page" from="341" to="348" />
			<date type="published" when="2013">2013</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<monogr>
		<author>
			<persName><forename type="first">A</forename></persName>
		</author>
		<ptr target="https://github.com/denkbares/SKOS-Utils" />
		<title level="m">Online Resources SKOS-Utils is still under development and we invite collaborators to join the development team</title>
				<imprint/>
	</monogr>
	<note>The sources are available via GitHub</note>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
