<?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">A Review and Design of Framework for Storing and Querying RDF Data using NoSQL Database</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Chanuwas</forename><surname>Aswamenakul</surname></persName>
							<email>chanuwas.a@kkumail.com</email>
							<affiliation key="aff0">
								<orgName type="department" key="dep1">Department of Computer Engineering</orgName>
								<orgName type="department" key="dep2">Faculty of Engineering</orgName>
								<orgName type="institution">Khon Kaen University</orgName>
								<address>
									<settlement>Khon Kaen</settlement>
									<country key="TH">Thailand</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Marut</forename><surname>Buranarach</surname></persName>
							<email>marut.bur@nectec.or.th</email>
							<affiliation key="aff1">
								<orgName type="department">Language and Semantic Technology Laboratory National Electronics and Computer Technology Center (NECTEC)</orgName>
								<address>
									<settlement>Pathumthani</settlement>
									<country key="TH">Thailand</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Kanda</forename><forename type="middle">Runapongsa</forename><surname>Saikaew</surname></persName>
							<affiliation key="aff0">
								<orgName type="department" key="dep1">Department of Computer Engineering</orgName>
								<orgName type="department" key="dep2">Faculty of Engineering</orgName>
								<orgName type="institution">Khon Kaen University</orgName>
								<address>
									<settlement>Khon Kaen</settlement>
									<country key="TH">Thailand</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">A Review and Design of Framework for Storing and Querying RDF Data using NoSQL Database</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">3F881AA7A57901CFC4EEFDB36C713C8B</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-23T23:31+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>Semantic Web application framework</term>
					<term>RDF database</term>
					<term>NoSQL</term>
				</keywords>
			</textClass>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>This paper reviews existing systems and describes a design of RDF database system that uses NoSQL database to store the data which aims to enhance performance of the Semantic Web applications. RDF data is a standard of data in the form of Subject-Predicate-Object called Triples and stored in database called Triple Store. Typically RDF database system uses SPARQL query language to query the RDF data from Triple Store database, e.g. Jena TDB. Our design of RDF database system uses NoSQL database, i.e.,MongoDB, to store the data in JSON-LD format and query by using query API of NoSQL database. We will use the Berlin SPARQL Benchmark to compare the performance of Triple Store and NoSQL systems.</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>Currently the amount of data has increased excessively with a variety of formats. The Semantic Web technology aims to provide standards and facilitate analyzing such big data. The Semantic Web uses RDF data to describe the data on the web in form of Subject-Predicate-Object called "triples" [1] that makes the data to have the standard data model.</p><p>In the present, there are many approaches to store and query RDF data. One approach to store RDF data is Triple Store designed for storing the triples format of RDF data <ref type="bibr" target="#b0">[2]</ref> and queried by using SPARQL query language. However, from the Berlin Benchmark results <ref type="bibr" target="#b1">[3]</ref>, Triple Stores show poor performance when compared to the relational database systems. NoSQL database removes some features of relational databases and uses other data models to improve the performance of database. This has motivated many works to store RDF data by using NoSQL database.</p><p>This paper reviews existing systems and designs a framework to store RDF data in NoSQL database. One of the main goals is to design a Semantic Web application framework that uses RDF data with NoSQL database, i.e., MongoDB. The ultimate objective is to provide a better support for researchers in developing the Semantic Web applications.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2">Review of NoSQL-based RDF Database</head><p>This section reviews some of RDF database systems that use NoSQL to store the RDF data including Neo4j [4] , AllegroGraph <ref type="bibr" target="#b2">[5]</ref> , H2RDF <ref type="bibr" target="#b3">[6]</ref> , Oracle NoSQL <ref type="bibr" target="#b4">[7]</ref> , MonetDB [8] and CumulusRDF <ref type="bibr" target="#b5">[9]</ref>. The comparison is based on some criteria of database software such as Implementation language, Database Model, SPARQL1.0, SPARQL1. </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3">Framework Design</head><p>This section describes our design for an application framework representing system architecture that compares the Triple Store-based implementation with the NoSQLbased implementation. We also provide query translation that represents some example translation of basic SPARQL queries adapted from the Berlin Benchmark <ref type="bibr" target="#b1">[3]</ref> to MongoDB queries.</p><p>In a system architecture based on the OAM framework <ref type="bibr" target="#b6">[10]</ref>, we compare between Triple Store based implementation and NoSQL based implementation. The Triple store based implementation uses Jena TDB to store the RDF data and OAM API that uses SPARQL to query the data from Jena TDB. In NoSQL based implementation, we use RDF to JSON-LD Converter to convert RDF data format to JSON-LD format, which is JSON-based format designed for Linked data <ref type="bibr" target="#b7">[11]</ref>, and use JSON-LD Parser to parse and import JSON-LD data to MongoDB. The OAM API then uses MongoDB query API to query the data from MongoDB.</p><p>Table <ref type="table" target="#tab_1">2</ref> illustrates some query translation based on the Berlin SPARQL benchmark. In Table <ref type="table" target="#tab_1">2</ref>, query 1 shows an example of query using FILTER, ORDER and LIMIT. Query 2 shows an example of query using OPTIONAL. Query 3 shows an example of query using regular expression.  This paper has proposed the design of RDF database system by using MongoDB to store the data in JSON-LD format and its query API. In the future, we will conduct the performance comparison of Triple Store, MongoDB RDF Database, and relational database using the Berlin SPARQL Benchmark. Several techniques will be investigated to improve the performance of the MongoDB RDF Database.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head>Fig. 1 .</head><label>1</label><figDesc>Fig. 1. Architecture of the OAM framework using Triple Store vs. NoSQL RDF database system</figDesc><graphic coords="3,170.93,250.89,253.44,131.20" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_0"><head>Table 1 .</head><label>1</label><figDesc>1, Trigger, Transaction Concept, Secondary Index, Consistency Concept, Partitioning Method, Replication Method, Concurrency, Map Reduce, Durability and Security. Table 1 provides a review summary of RDF database systems that use NoSQL database. Review summary of RDF database systems that use NoSQL database</figDesc><table><row><cell>Name</cell><cell>Neo4j</cell><cell>AllegroGraph</cell><cell>H2RDF</cell><cell>Oracle</cell><cell>MonetDB</cell><cell>CumulusRDF</cell></row><row><cell></cell><cell></cell><cell></cell><cell></cell><cell>NoSQL</cell><cell></cell><cell></cell></row><row><cell>Implementation</cell><cell>Java</cell><cell>Common Lisp</cell><cell>Java</cell><cell>Java</cell><cell>C</cell><cell>Java</cell></row><row><cell>language</cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell></row><row><cell>Database Model</cell><cell>Graph</cell><cell>Graph Database,</cell><cell>Column Store</cell><cell>Key-Value</cell><cell>Column Store</cell><cell>Column Store</cell></row><row><cell></cell><cell>Database</cell><cell>Document store</cell><cell>Database</cell><cell>Database</cell><cell>Database</cell><cell>Database</cell></row><row><cell></cell><cell></cell><cell>Database</cell><cell></cell><cell></cell><cell></cell><cell></cell></row><row><cell>SPARQL 1.0</cell><cell>Yes</cell><cell>Yes</cell><cell>Yes</cell><cell>Yes</cell><cell>Yes</cell><cell>Yes</cell></row><row><cell>SPARQL 1.1</cell><cell>Yes</cell><cell>Yes</cell><cell>Yes</cell><cell>Yes</cell><cell>No</cell><cell>Yes</cell></row><row><cell>Trigger</cell><cell>Yes</cell><cell>No</cell><cell>Yes</cell><cell>No</cell><cell>Yes</cell><cell>Yes</cell></row><row><cell>Transaction Concept</cell><cell>ACID</cell><cell>ACID</cell><cell>Configure</cell><cell>ACID</cell><cell>ACID</cell><cell>Configure</cell></row><row><cell></cell><cell></cell><cell></cell><cell>ACID +</cell><cell></cell><cell></cell><cell>ACID(Lightweight</cell></row><row><cell></cell><cell></cell><cell></cell><cell>Visibility</cell><cell></cell><cell></cell><cell>Transaction)</cell></row><row><cell>Secondary Index</cell><cell>Yes</cell><cell>Yes</cell><cell>Yes</cell><cell>No</cell><cell>Yes</cell><cell>Yes</cell></row><row><cell>Consistency Concept</cell><cell>Eventual</cell><cell>Strong</cell><cell>Strong</cell><cell>Several</cell><cell>Strong</cell><cell>Tunable consistency</cell></row><row><cell></cell><cell>consistency</cell><cell>consistency</cell><cell>consistency</cell><cell>consistency</cell><cell>consistentcy</cell><cell></cell></row><row><cell></cell><cell></cell><cell></cell><cell></cell><cell>policies</cell><cell></cell><cell></cell></row><row><cell>Partitioning method</cell><cell>Cache</cell><cell>Sharding</cell><cell>Sharding</cell><cell>Sharding</cell><cell>None</cell><cell>Sharding</cell></row><row><cell></cell><cell>Sharding</cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell></row><row><cell>Replication method</cell><cell>Master-slave</cell><cell>Master-slave</cell><cell cols="2">Master-slave Master-slave</cell><cell>None</cell><cell>Selectable</cell></row><row><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell>replication factor</cell></row><row><cell>Concurrency</cell><cell>Yes</cell><cell>Yes</cell><cell>Yes</cell><cell>Yes</cell><cell>Yes</cell><cell>Yes</cell></row><row><cell>MapReduce</cell><cell>No</cell><cell>No</cell><cell>Yes</cell><cell>Yes</cell><cell>Yes</cell><cell>Yes</cell></row><row><cell>Durability</cell><cell>Yes</cell><cell>Yes</cell><cell>Yes</cell><cell>Yes</cell><cell>Yes</cell><cell>Yes</cell></row><row><cell>Security</cell><cell cols="2">Security Rule Filter per User</cell><cell>Access Control</cell><cell>User and Role</cell><cell>fixed user and</cell><cell>Object Permission</cell></row><row><cell></cell><cell></cell><cell>and/or Role</cell><cell>List (ACL)</cell><cell>Permission</cell><cell>password by</cell><cell></cell></row><row><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell>admin</cell><cell></cell></row></table></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_1"><head>Table 2 .</head><label>2</label><figDesc>Sample query translation based on the Berlin SPARQL Benchmark</figDesc><table><row><cell>Query Description</cell><cell>SPARQL</cell><cell>MongoDB query</cell></row><row><cell>1. Find products for given</cell><cell>SELECT ?product ?label</cell><cell>db.collection.find(</cell></row><row><cell>product type and value of</cell><cell>WHERE {?product label ?label</cell><cell>{label : {$exists : true},</cell></row><row><cell>property numeric1 must be</cell><cell>?product a ProductType56</cell><cell>types : 'ProductType56',</cell></row><row><cell>greater than 318 then results</cell><cell>?product PropertyNumeric1 ?value</cell><cell>PropertyNumeric : {$gt : 318}}</cell></row><row><cell>ordered by value of label and</cell><cell>FILTER (?value &gt; 318) }</cell><cell>,{label : 1}).sort({label :</cell></row><row><cell>limit number of results by 10.</cell><cell>ORDER BY ?label LIMIT 10</cell><cell>1}).limit(10)</cell></row><row><cell>2. Retrieve the basic</cell><cell>SELECT ?label ?comment ?propertyTextual1</cell><cell>db.collection.find(</cell></row><row><cell>information of products and</cell><cell>?propertyNumeric2</cell><cell>{_id : 'Product1277', label :</cell></row><row><cell>products may not have property</cell><cell>WHERE {Product127 label ?label</cell><cell>{$exists : true},</cell></row><row><cell>numeric2 (OPTIONAL in</cell><cell>Product17 comment ?comment</cell><cell>comment : {$exists : true},</cell></row><row><cell>SPARQL).</cell><cell>Product1277 PropertyTextual1</cell><cell>PropertyTextual :</cell></row><row><cell></cell><cell>?propertyTextual1</cell><cell>{$exists : true}}</cell></row><row><cell></cell><cell>OPTIONAL { Product1277 PropertyNumeric2</cell><cell>, {_id : 0, label : 1, comment : 1</cell></row><row><cell></cell><cell>?propertyNumeric2 } }</cell><cell>, PropertyTextual1 : 1</cell></row><row><cell></cell><cell></cell><cell>, PropertyNumeric2 : 1})</cell></row><row><cell>3. Find products having a label</cell><cell>Select ?product ?label</cell><cell>db.collection.find(</cell></row><row><cell>that contain given string by</cell><cell>where { ?product label ?label</cell><cell>{label : {$regex : 'dungs'}</cell></row><row><cell>using regular expression.</cell><cell>?product type Product</cell><cell>, '@type' : 'Product'}</cell></row><row><cell></cell><cell>FILTER regex(?label, "dung")}</cell><cell>, {label : 1})</cell></row></table></figure>
		</body>
		<back>

			<div type="acknowledgement">
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Acknowledgement</head><p>The financial support from Young Scientist and Technologist Programme, NSTDA (YSTP: SP-56-NT03) is gratefully acknowledged.</p></div>
			</div>

			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<monogr>
		<title level="m" type="main">Triple Store</title>
		<ptr target="http://www.w3.org/wiki/RdfStoreBenchmarking" />
		<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<analytic>
		<title level="a" type="main">The berlin sparql benchmark</title>
		<author>
			<persName><forename type="first">C</forename><surname>Bizer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Schultz</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">International Journal on Semantic Web and Information Systems (IJSWIS)</title>
		<imprint>
			<biblScope unit="volume">5</biblScope>
			<biblScope unit="issue">2</biblScope>
			<biblScope unit="page" from="1" to="24" />
			<date type="published" when="2009">2009</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<monogr>
		<ptr target="http://franz.com/agraph/allegrograph/" />
		<title level="m">AllegroGraph</title>
				<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<monogr>
		<title level="m" type="main">H2RDF: Adaptive Query Processing on RDF Data in the Cloud</title>
		<author>
			<persName><forename type="first">N</forename><surname>Papailiou</surname></persName>
		</author>
		<author>
			<persName><forename type="first">I</forename><surname>Konstantinou</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Tsoumakos</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><surname>Koziris</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2012">2012</date>
			<publisher>WWW</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<monogr>
		<title level="m" type="main">Oracle NoSQL database</title>
		<ptr target="http://docs.oracle.com/cd/E26161_02/html/RDFGraph/" />
		<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">NoSQL Databases for RDF: An Empirical Evaluation</title>
		<author>
			<persName><forename type="first">P</forename><surname>Cudré-Mauroux</surname></persName>
		</author>
		<author>
			<persName><forename type="first">I</forename><surname>Enchev</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Fundatureanu</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><forename type="middle">T</forename><surname>Groth</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Haque</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Harth</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><forename type="middle">L</forename><surname>Keppmann</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><forename type="middle">P</forename><surname>Miranker</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Sequeda</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Wylot</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">International Semantic Web Conference (2)</title>
				<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2013">2013</date>
			<biblScope unit="page" from="310" to="325" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<analytic>
		<title level="a" type="main">A Community-Driven Approach to of an Ontology-Based Application Management Framework</title>
		<author>
			<persName><forename type="first">M</forename><surname>Buranarach</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Y</forename><surname>Thein</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Supnithi</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Semantic Technology</title>
				<editor>
			<persName><forename type="first">H</forename><surname>Takeda</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">Y</forename><surname>Qu</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">R</forename><surname>Mizoguchi</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">Y</forename><surname>Kitamura</surname></persName>
		</editor>
		<imprint>
			<biblScope unit="page" from="306" to="312" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<monogr>
		<author>
			<persName><surname>Ld</surname></persName>
		</author>
		<ptr target="http://json-ld.org/" />
		<title level="m">JSON</title>
				<imprint/>
	</monogr>
</biblStruct>

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