<?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">RMLWeaver-JS: An Algebraic Mapping Engine in the KGCW Challenge 2024</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Sitt</forename><forename type="middle">Min</forename><surname>Oo</surname></persName>
							<affiliation key="aff0">
								<orgName type="department" key="dep1">IDLab</orgName>
								<orgName type="department" key="dep2">Dept. Electronics &amp; Information Systems</orgName>
								<orgName type="institution">Ghent University -imec</orgName>
								<address>
									<country key="BE">Belgium</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Tristan</forename><surname>Verbeken</surname></persName>
							<email>tristan.verbeken@ugent.be</email>
							<affiliation key="aff0">
								<orgName type="department" key="dep1">IDLab</orgName>
								<orgName type="department" key="dep2">Dept. Electronics &amp; Information Systems</orgName>
								<orgName type="institution">Ghent University -imec</orgName>
								<address>
									<country key="BE">Belgium</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Ben</forename><surname>De Meester</surname></persName>
							<email>ben.demeester@ugent.be</email>
							<affiliation key="aff0">
								<orgName type="department" key="dep1">IDLab</orgName>
								<orgName type="department" key="dep2">Dept. Electronics &amp; Information Systems</orgName>
								<orgName type="institution">Ghent University -imec</orgName>
								<address>
									<country key="BE">Belgium</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">RMLWeaver-JS: An Algebraic Mapping Engine in the KGCW Challenge 2024</title>
					</analytic>
					<monogr>
						<idno type="ISSN">1613-0073</idno>
					</monogr>
					<idno type="MD5">F21F1E09F58D1EA94AA6EBBBCE0BA544</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2025-04-23T18:22+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>Mapping engine</term>
					<term>mapping algebra</term>
					<term>RML</term>
					<term>knowledge graph construction</term>
				</keywords>
			</textClass>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>We present the Knowledge Graph Construction Workshop (KGCW) Challenge 2024 results of our proof of concept mapping engine, RMLWeaver-JS, implemented in JavaScript and based on the reactive programming paradigm. RML documents are translated into a mapping plan consisting of algebraic mapping operators, which RMLWeaver-JS uses to execute the mapping workload. RMLWeaver-JS is evaluated for Track 2 on performance for the Knowledge Graph Construction Challenge for CSV files. The results of the challenge showed that RMLWeaver-JS has a constant memory usage across different workloads, and scales linearly regarding CPU usage and execution time. However, the results also show that the execution time of RMLWeaver-JS greatly depends on the generated mapping plan. As future works, we will focus on the optimizations of the generated mapping plan.</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>The Knowledge Graph Construction Workshop (KGCW) Challenge 2024 [1] presents 2 tracks of challenges measuring the different aspect of mapping engines implementing RML: 1) feature compliance with the RML specification, and 2) the performance of the mapping engine implementation based on different workloads.</p><p>For this challenge, we implemented an algebraic mapping engine, RMLWeaver-JS <ref type="bibr" target="#b0">1</ref> , as a proof of concept implementation utilizing algebraic mapping plans while focusing on the performance of the mapping engine. The implementation is based on RML.io's RML specification v1.1.1 <ref type="bibr" target="#b1">2</ref> with limited support for logical sources and reference iterators. Therefore, we did not participate in the Track 1 challenge, which evaluates the mapping engine's conformance to W3C Knowledge Graph Construction Community Group RML specification <ref type="bibr" target="#b2">3</ref> . The engine is evaluated in the Track 2 challenge on the performance of the mapping engines, measuring memory usage, CPU usage, and execution time. However, due to the limitations of the engine implementation, we did not evaluate RMLWeaver-JS for the GTFS [2] test cases.</p><p>The evaluation results show that RMLWeaver-JS maintains a constant memory usage for mapping workloads without joins, with a linear increase in execution time and full CPU usage for increasing input data size. For mapping workloads with joins, RMLWeaver-JS has a linear increase in memory usage, CPU usage and execution time.</p><p>Section 2 discusses the mapping pipeline, where an RML document is first translated to a mapping plan, which RMLWeaver-JS uses to map heterogeneous data to RDF data. Section 3 presents the evaluation set-up. Section 4 presents the result of the evaluation of RMLWeaver-JS in Track 2 of KGCW challenge, and finally, we conclude in Section 5, including a discussion for future work on algebraic mapping engines.  The algebraic mapping engine pipeline consists of two stages: 1) translate RML documents to a mapping plan consisting of algebraic operators, and 2) execute the generated mapping plan. The separation of the interpretation and the execution step allows reusing the interpretation step in different development contexts (i.e. different programming languages and frameworks can execute the same mapping plan). Furthermore, depending on the structure of the generated mapping plan, the performance of the mapping engine can be improved. In order to show the correlation between the structure of the mapping plan and the performance of the mapping engine, we made the following choices in the implementation languages used for the interpretation and the execution engines.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.">Algebraic Mapping Engine Pipeline</head><p>The interpretation engine, called AlgeMapLoom-rs <ref type="bibr" target="#b3">4</ref> , translates RML documents to mapping plans, and it is implemented in Rust <ref type="bibr" target="#b4">5</ref> . We decided to use Rust for the interpretation engine due to (i) its ability to be compiled for a multitude of runtimes (e.g. into WebAssembly to be used by JavaScript); (ii) its robust feature support in writing CLI 6 applications; and (iii) low memory footprint as it does not have a memory garbage collector. This ensures that the whole pipeline of knowledge graph construction does not suffer from high memory usage for fast mapping plan translation. The mapping process described by the RML document is translated to a mapping plan consisting of several algebraic operators, as described in our previous work on algebraic mapping operators [3]. For the KGCW challenge, the interpretation engine only supports RML.io's RML specification, v1.1.1.</p><p>The execution engine, which executes the mapping plan and generates the KG from heterogeneous data sources, is implemented in JavaScript with a reactive programming paradigm. We utilized RxJS<ref type="foot" target="#foot_3">7</ref> to enable reactive programming for the mapping plan execution. Reactive programming ensures that we process the input data one record at a time in streaming fashion, which lowers the memory usage throughout the mapping process. We used JavaScript to implement the execution engine to show that even engine implementations in interpreted languages could execute KG construction workloads with reasonable performance, as shown in Section 4.</p><p>As it is a proof-of-concept implementation, the execution engine has the following limitations for this challenge: i) it can only process CSV input files, ii) it does not ignore empty values, and iii) it cannot deduplicate the generated KG triples. Thus, due to the aforementioned limitations, GTFS test cases could not be run since they test the engine's ability to process a combination of different input data formats.</p><p>Figure <ref type="figure" target="#fig_0">1</ref> illustrates the mapping pipeline deployed for the challenge. The interpretation engine is used to first translate RML documents into a mapping plan. Afterwards, the execution engine uses the generated mapping plan to execute the mapping process described in the RML document.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.">Experiment</head><p>The experiment environment for KGCW challenge 2024 is a virtual machine provided by Orange<ref type="foot" target="#foot_4">8</ref> . The machine has an 64 bit architecture, and it is configured with an Intel(R) Xeon(R) Gold 6161 CPU at 2.20GHz with 4 cores, 16765 MB of RAM, and 150 GB of storage space. The operating system of the machine is Ubuntu 22.04.03 LTS.</p><p>The pipeline as described in Section 2 is benchmarked for part 1 of the Track 2 challenge, measuring the performance of RMLWeaver-JS based on Knowledge Graph Construction Parameters. For the experiment, we execute the algebraic mapping pipeline with the execution tools provided by the KGCW challenge [1], isolated by using a Docker container<ref type="foot" target="#foot_5">9</ref> .</p><p>We use the default settings of 3 runs per experiment and collected the median measurements as the results. Since the engine generates multiple output files to write the generated triples, the generated results are aggregated into a single file first before comparison with the baseline results of the challenge. We compare the aggregated output results with the baseline results provided by the challenge to ensure the correctness of our algebraic mapping engine. </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.">Results</head><p>The metrics are collected and uploaded to Zenodo<ref type="foot" target="#foot_6">10</ref> . The performance results of RMLWeaver-JS for Track 2 on Knowledge Graph parameters benchmarks are as expected for a JavaScript mapping engine, according to the implementation as described in Section 2. To summarize, RMLWeaver-JS has a constant memory usage even when the parameter values are changed for each groups of test cases. The constant memory usage of around 500 MB is due to Node.js' default memory limit of 512 MB. CPU usage is only 25% (100% CPU usage is achieved by multiplying execution time with the number of cores available on the system) despite the presence of four cores on the virtual machine provided for the challenge. This limitation is due to RMLWeaver-JS not utilizing all four cores of the CPU on the virtual machine, since JavaScript is single-threaded (when not using Web Workers<ref type="foot" target="#foot_7">11</ref> ). Thus, we can still conclude that RMLWeaver-JS has a 100% CPU utilization on a single core. We plotted a bar graph in Figure <ref type="figure" target="#fig_1">2</ref> where RMLWeaver-JS performed poorly in execution time despite the usage of only a single data source in the test cases. Table <ref type="table" target="#tab_1">1</ref> shall be used to explain the general behaviour of RMLWeaver-JS across the different test cases.</p><p>Figure <ref type="figure" target="#fig_1">2</ref> shows the test case where the number of triples maps and predicate object maps are the independent variables of the experiment. RMLWeaver-JS has a significant increase in execution time of 43 seconds for the test case with 15 triples maps and 1 predicate-object map despite the constant memory usage. The constant memory usage is explainable by the reactive programming paradigm implemented by RMLWeaver-JS where the data input is processed one at a time in a streaming manner. The increase in execution time is due to the way the interpreter engine translates RML documents into mapping plans. The RML document provided with the challenge contains several definitions of logical sources, despite all the logical sources referencing the same data.csv file, with the same iterator. The interpreter engine generates a new source operator for each of the logical sources encountered in the RML document. This results in RMLWeaver-JS reading the input file 𝑁 times for the 𝑁 number of triples maps defined in the RML document. We can potentially improve the performance by enabling the detection of semantically similar logical sources in the interpreter engine and generating only unique source operators. Table <ref type="table" target="#tab_1">1</ref> contains the median measurement of each group of test cases, some results are omitted since they do not show interesting trends to explain the behaviour of RMLWeaver-JS for the performance measured.</p><p>With the linearly increasing number of records, with 20 columns, RMLWeaver-JS experience a linear increase in execution time. A 10 times increase in the number of rows results in a 10 times increase in execution time, approximately. Similarly, for the test cases on increasing number of data properties, with 1M records, RMLWeaver-JS exhibited a linear increase in execution time, as in the test cases for increasing number of records.</p><p>For the test cases testing on empty and duplicate values, RMLWeaver-JS does not produce the correct RDF triples output compared to the ground truth. This limitation arises due to RMLWeaver-JS not supporting the handling of empty values, nor does it deduplicate the generated triples.</p><p>For test cases on joins, RMLWeaver-JS have the same performance across all metrics depending on the 𝑚𝑖𝑛(𝑁, 𝑀 ) in test case Join N-M. This can be explained as follows: A test case Join N-M has two data sources with 𝑆 1 and 𝑆 2 , where 𝑁 records in 𝑆 1 has 𝑀 records from 𝑆 2 , with which it matches to be joined. RMLWeaver-JS employs a hash-join approach when joining data from two different sources. Two hash maps, one for each of the two sources, are used internally by RMLWeaver-JS for bookkeeping when joining records from the two different data sources. For example, when joining on attribute 𝐴, and provided 𝑁 𝑀 and 𝑁 records come from 𝑆 1 and 𝑀 records come from 𝑆 2 . The following condition is necessary for RMLWeaver-JS to have similar performance as shown in the table: 𝑁 records for a specific attribute 𝐴 need to arrive first at the join operator and be stored in the hash map 𝐻𝑎𝑠ℎ𝑀 𝑎𝑝 𝑆 1 (𝐴) from source 𝑆 1 . This results in a lower amortized cost of having to only loop through 𝑁 times to join the records arriving from source 𝑆 2 . Otherwise, if 𝑀 records from 𝑆 2 , for attribute 𝐴, arrives first with 𝑀 𝑁 , it will take a longer amortized time to produce the join results where each new arriving records from 𝑆 1 will have to loop through at least 𝑀 times. This explains the similar performance of RMLWeaver-JS for both Join 5-5 and Join 10-5 in terms of maximum RAM and CPU usage, and the execution time.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5.">Conclusion</head><p>In this work, we participated in KGCW Challenge 2024, for Track 2 on Knowledge Graph Construction parameters, to evaluate the performance of RMLWeaver-JS in terms of execution time, maximum RAM and CPU usage. The results demonstrated that RMLWeaver-JS has a constant memory usage of around 500 MB despite the increasing number of rows in the input data source. RMLWeaver-JS also has an efficient usage of CPU by maintaining a 100% usage for a single core since it is implemented in JavaScript, which is single-threaded.</p><p>The constant memory usage, despite the increase in the size of the input data, and an efficient usage of CPU demonstrates the viability of implementing mapping engines in interpreted language like JavaScript in web browsers. Implementation of mapping engines in JavaScript could potentially empower both the client and the server web applications with semantic knowledge from heterogeneous data sources.</p><p>Furthermore, we also identified a potential solution to the performance bottleneck suffered as a result of badly generated mapping plans by the interpreter engine. The interpreter engine could generate unique source operators (instead of its current behaviour of creating duplicate operators for each identical source), thus, reducing the number of data sources being iterated over, which leads to increase in performance by RMLWeaver-JS by reducing execution time. This also shows the potential of utilizing algebraic mapping plans, where the mapping engines benefit from the optimizations done on the algebraic mapping plans, without any changes to the implementation of the mapping engine.</p><p>As a future work, the interpreter engine could be improved with mappings partition as done by Morph-KGC [4], and employing heuristic-based planning just like SDM-RDFizer [5]. These optimization techniques could improve the performance of RMLWeaver-JS without changing its implementation, as the mapping plan optimizations could be done at the interpretation stage.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head>Figure 1 :</head><label>1</label><figDesc>Figure 1: Algebraic mapping engine pipeline where an RML document is first translated into an algebraic mapping plan which is used to generate the KG.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head>Figure 2 :</head><label>2</label><figDesc>Figure 2: RMLWeaver-JS has a significant increase in execution time, at 43 seconds, for the test case with 15 triples maps and 1 predicate object map despite almost constant memory usage across the different test cases.</figDesc></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>Median measurements of RMLWeaver-JS's performance in terms of execution time (s), CPU (s), and maximum RAM (MB) usage. The output is also checked with the ground truth provided by the challenge.</figDesc><table><row><cell>Test</cell></row></table></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_2"><head>cases Execution time (s) CPU usage (s) Peak RAM (MB) Output correct? (Y/N)</head><label></label><figDesc></figDesc><table><row><cell>Properties (1M rows)</cell><cell></cell><cell></cell><cell></cell><cell></cell></row><row><cell>1 column</cell><cell>17.78</cell><cell>19.52</cell><cell>476</cell><cell>Yes</cell></row><row><cell>10 columns</cell><cell>65.63</cell><cell>69.78</cell><cell>521</cell><cell>Yes</cell></row><row><cell>20 columns</cell><cell>113.74</cell><cell>127.11</cell><cell>526</cell><cell>Yes</cell></row><row><cell>30 columns</cell><cell>172.82</cell><cell>194.09</cell><cell>507</cell><cell>Yes</cell></row><row><cell>Records (20 col)</cell><cell></cell><cell></cell><cell></cell><cell></cell></row><row><cell>10K rows</cell><cell>2.56</cell><cell>3.34</cell><cell>476</cell><cell>Yes</cell></row><row><cell>100K rows</cell><cell>13.51</cell><cell>14.76</cell><cell>485</cell><cell>Yes</cell></row><row><cell>1M rows</cell><cell>112.05</cell><cell>125.52</cell><cell>505</cell><cell>Yes</cell></row><row><cell>11M rows</cell><cell>1116.40</cell><cell>1249.97</cell><cell>544</cell><cell>Yes</cell></row><row><cell>Duplicates</cell><cell></cell><cell></cell><cell></cell><cell></cell></row><row><cell>0 percent</cell><cell>12.90</cell><cell>14.70</cell><cell>534</cell><cell>Yes</cell></row><row><cell>100 percent</cell><cell>12.70</cell><cell>14.60</cell><cell>531</cell><cell>No</cell></row><row><cell>Empty</cell><cell></cell><cell></cell><cell></cell><cell></cell></row><row><cell>0 percent</cell><cell>12.70</cell><cell>14.50</cell><cell>530</cell><cell>Yes</cell></row><row><cell>100 percent</cell><cell>12.60</cell><cell>14.40</cell><cell>531</cell><cell>No</cell></row><row><cell>Joins 1-N</cell><cell></cell><cell></cell><cell></cell><cell></cell></row><row><cell>1-10 0 percent</cell><cell>15.60</cell><cell>17.60</cell><cell>664</cell><cell>Yes</cell></row><row><cell>1-10 100 percent</cell><cell>30.00</cell><cell>33.60</cell><cell>638</cell><cell>Yes</cell></row><row><cell>Joins N-1</cell><cell></cell><cell></cell><cell></cell><cell></cell></row><row><cell>10-1 0 percent</cell><cell>15.60</cell><cell>17.80</cell><cell>656</cell><cell>Yes</cell></row><row><cell>10-1 100 percent</cell><cell>30.00</cell><cell>33.80</cell><cell>636</cell><cell>Yes</cell></row><row><cell>Joins N-M</cell><cell></cell><cell></cell><cell></cell><cell></cell></row><row><cell>5-5 25 percent</cell><cell>35.16</cell><cell>38.80</cell><cell>673</cell><cell>Yes</cell></row><row><cell>5-5 100 percent</cell><cell>82.00</cell><cell>90.90</cell><cell>814</cell><cell>Yes</cell></row><row><cell>10-5 25 percent</cell><cell>35.20</cell><cell>39.50</cell><cell>661</cell><cell>Yes</cell></row><row><cell>10-5 100 percent</cell><cell>82.30</cell><cell>91.00</cell><cell>781</cell><cell>Yes</cell></row></table></figure>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="4" xml:id="foot_0">https://github.com/RMLio/algemaploom-rs</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="5" xml:id="foot_1">Rust: https://www.rust-lang.org/</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="6" xml:id="foot_2">Rust Clap: https://github.com/clap-rs/clap</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="7" xml:id="foot_3">RxJS: https://rxjs.dev/</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="8" xml:id="foot_4">Orange Telecom: https://www.orange.be/</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="9" xml:id="foot_5">Docker: https://www.docker.com/</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="10" xml:id="foot_6">https://zenodo.org/doi/10.5281/zenodo.11209233</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="11" xml:id="foot_7">Web workers: https://html.spec.whatwg.org/multipage/workers.html</note>
		</body>
		<back>
			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<monogr>
		<author>
			<persName><forename type="first">D</forename><surname>Van Assche</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Chaves-Fraga</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Dimou</surname></persName>
		</author>
		<author>
			<persName><forename type="first">U</forename><surname>Serles</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Iglesias</surname></persName>
		</author>
		<idno type="DOI">10.5281/zenodo.10973433</idno>
		<title level="m">Challenge @ ESWC 2024</title>
				<imprint>
			<date type="published" when="2024">2024. 2024</date>
		</imprint>
	</monogr>
	<note>KGCW</note>
</biblStruct>

<biblStruct xml:id="b1">
	<analytic>
		<title level="a" type="main">GTFS-Madrid-Bench: A benchmark for virtual knowledge graph access in the transport domain</title>
		<author>
			<persName><forename type="first">D</forename><surname>Chaves-Fraga</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Priyatna</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Cimmino</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Toledo</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Ruckhaus</surname></persName>
		</author>
		<author>
			<persName><forename type="first">O</forename><surname>Corcho</surname></persName>
		</author>
		<idno type="DOI">10.1016/j.websem.2020.100596</idno>
		<ptr target="https://www.sciencedirect.com/science/article/pii/S1570826820300354.doi:10.1016/j.websem.2020.100596" />
	</analytic>
	<monogr>
		<title level="j">Journal of Web Semantics</title>
		<imprint>
			<biblScope unit="volume">65</biblScope>
			<biblScope unit="page">100596</biblScope>
			<date type="published" when="2020">2020</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<analytic>
		<title level="a" type="main">Towards Algebraic Mapping Operators for Knowledge Graph Construction</title>
		<author>
			<persName><forename type="first">B</forename><surname>Sitt Min Oo</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>De Meester</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Taelman</surname></persName>
		</author>
		<author>
			<persName><surname>Colpaert</surname></persName>
		</author>
		<ptr target="https://ceur-ws.org/Vol-3632/ISWC2023_paper_412.pdf" />
	</analytic>
	<monogr>
		<title level="m">Proceedings of the ISWC 2023 Posters, Demos and Industry Tracks: From Novel Ideas to Industrial Practice co-located with 22 nd International Semantic Web Conference (ISWC 2023)</title>
				<editor>
			<persName><forename type="first">I</forename><surname>Fundulaki</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">K</forename><surname>Kouji</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">D</forename><surname>Garijo</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">J</forename><forename type="middle">M</forename><surname>Gomez-Perez</surname></persName>
		</editor>
		<meeting>the ISWC 2023 Posters, Demos and Industry Tracks: From Novel Ideas to Industrial Practice co-located with 22 nd International Semantic Web Conference (ISWC 2023)</meeting>
		<imprint>
			<date type="published" when="2023">2023</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">Morph-kgc: Scalable knowledge graph materialization with mapping partitions</title>
		<author>
			<persName><forename type="first">J</forename><surname>Arenas-Guerrero</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Chaves-Fraga</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Toledo</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Pérez</surname></persName>
		</author>
		<author>
			<persName><forename type="first">O</forename><surname>Corcho</surname></persName>
		</author>
		<idno type="DOI">10.3233/SW-223135</idno>
	</analytic>
	<monogr>
		<title level="j">Semantic Web</title>
		<imprint>
			<biblScope unit="volume">15</biblScope>
			<biblScope unit="page" from="1" to="20" />
			<date type="published" when="2022">2022</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<title level="a" type="main">Empowering the SDM-RDFizer Tool for Scaling Up to Complex Knowledge Graph Creation Pipelines</title>
		<author>
			<persName><forename type="first">E</forename><surname>Iglesias</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Vidal</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Jozashoori</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Collarana</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Chaves-Fraga</surname></persName>
		</author>
		<idno type="DOI">10.3233/sw-243580</idno>
	</analytic>
	<monogr>
		<title level="j">Semantic Web Journal</title>
		<imprint>
			<biblScope unit="page" from="1" to="28" />
			<date type="published" when="2024">2024</date>
		</imprint>
	</monogr>
</biblStruct>

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