178 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
		
		
			
		
	
	
			178 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| 
								 | 
							
								<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<html>
							 | 
						||
| 
								 | 
							
								<head>
							 | 
						||
| 
								 | 
							
								<title>Online SWI-Prolog RDF parser demo</title>
							 | 
						||
| 
								 | 
							
								</head>
							 | 
						||
| 
								 | 
							
								<body>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<h1 align=center>Online SWI-Prolog RDF parser demo</h1>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<p>
							 | 
						||
| 
								 | 
							
								This page provides an online demonstration of an RDF parser written in <a
							 | 
						||
| 
								 | 
							
								href="http://www.swi-prolog.org">SWI-Prolog</a> and distributed as part of the
							 | 
						||
| 
								 | 
							
								normal SWI-Prolog distribution. This RDF parser has a couple of attractive
							 | 
						||
| 
								 | 
							
								properties:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<dl>
							 | 
						||
| 
								 | 
							
								    <dt><b>Small</b><dd>
							 | 
						||
| 
								 | 
							
								Both in terms of source-code (< 1200 lines) and executable.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    <dt><b>Fast</b><dd>
							 | 
						||
| 
								 | 
							
								Parses about 1.2 Mbytes/sec on an AMD 1600+ running SWI-Prolog 5.1.6 and
							 | 
						||
| 
								 | 
							
								SuSE Linux 8.1 (tested on a 9MB RDFS file containing 179403 triples).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    <dt><b>Conforming</b><dd>
							 | 
						||
| 
								 | 
							
								This parser conforms to http://www.w3.org/TR/rdf-syntax-grammar/,
							 | 
						||
| 
								 | 
							
								W3C Working Draft 8 November 2002.  It includes the revised bag
							 | 
						||
| 
								 | 
							
								syntax, <code>xml:base</code>, <code>parseType="Collection"</code>
							 | 
						||
| 
								 | 
							
								and <code>nodeID</code> features.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    <dt><b>Prolog based</b><dd>
							 | 
						||
| 
								 | 
							
								Many people regard the Prolog programming language a good vehicle to
							 | 
						||
| 
								 | 
							
								reason about RDF statements. Having a simple and fast Prolog-based RDF
							 | 
						||
| 
								 | 
							
								parser makes life easier.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    <dt><b>Portability</b><dd>
							 | 
						||
| 
								 | 
							
								The RDF parser itself is written in ISO Prolog.  The XML parser is
							 | 
						||
| 
								 | 
							
								written in ANSI-C.  There is no standard for interfacing Prolog and C,
							 | 
						||
| 
								 | 
							
								but the interface is relatively small.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    <dt><b>Discussion Page</b><dd>
							 | 
						||
| 
								 | 
							
								There is a
							 | 
						||
| 
								 | 
							
								<a href="http://gollem.science.uva.nl/twiki/pl/bin/view/Library/RdfParse">
							 | 
						||
| 
								 | 
							
								discussion page</a> on this parser on the SWI-Prolog collaborative
							 | 
						||
| 
								 | 
							
								(<em>twiki</em> web) </dl>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								A more detailed description of this packages is available in <a
							 | 
						||
| 
								 | 
							
								href="http://www.swi-prolog.org/packages/rdf2pl.html">in this
							 | 
						||
| 
								 | 
							
								document</a>. The sources of the parser are included in the full
							 | 
						||
| 
								 | 
							
								source for SWI-Prolog. The individual source files can also be
							 | 
						||
| 
								 | 
							
								examined through the <a
							 | 
						||
| 
								 | 
							
								href="http://gollem.science.uva.nl/cgi-bin/pl-cvsweb/pl/packages/sgml/RDF">
							 | 
						||
| 
								 | 
							
								cvsweb service</a>.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<p>
							 | 
						||
| 
								 | 
							
								<hr>
							 | 
						||
| 
								 | 
							
								Please write your RDF description into the text-area below or select a
							 | 
						||
| 
								 | 
							
								local file using the <b>File:</b> item and submit it. If anything goes
							 | 
						||
| 
								 | 
							
								wrong, please mail <a href="mailto:wielemak@science.uva.nl">Jan
							 | 
						||
| 
								 | 
							
								Wielemaker</a>.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<p>
							 | 
						||
| 
								 | 
							
								<em>The RDF-data submitted is kept <b>anonymously</b> on our server and
							 | 
						||
| 
								 | 
							
								might be used by us to examine problems with our RDF parser.  We do not
							 | 
						||
| 
								 | 
							
								publish this material.</em> The result-page provides a form for
							 | 
						||
| 
								 | 
							
								attaching a comment to the stored RDF statement.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<p>
							 | 
						||
| 
								 | 
							
								<form
							 | 
						||
| 
								 | 
							
								  name=rdf
							 | 
						||
| 
								 | 
							
								  method=post
							 | 
						||
| 
								 | 
							
								  enctype="multipart/form-data"
							 | 
						||
| 
								 | 
							
								  action="@ACTION@">
							 | 
						||
| 
								 | 
							
								<table align=center>
							 | 
						||
| 
								 | 
							
								<tr><td colspan=2>
							 | 
						||
| 
								 | 
							
								  <textarea name=rdf rows=15 cols=72 wrap=off></textarea>
							 | 
						||
| 
								 | 
							
								<tr><td>File: <input name=attachment type=file>
							 | 
						||
| 
								 | 
							
								    <td align=right>
							 | 
						||
| 
								 | 
							
								      <input type=button value='Example 1' onClick="ex1()">
							 | 
						||
| 
								 | 
							
								      <input type=button value='Example 2' onClick="ex2()">
							 | 
						||
| 
								 | 
							
								      <input type=button value='Example 3' onClick="ex3()">
							 | 
						||
| 
								 | 
							
								      <input type=button value='Example 19' onClick="ex19()">
							 | 
						||
| 
								 | 
							
								<tr><td align=left><input type=reset value="Clear Text">
							 | 
						||
| 
								 | 
							
								    <td align=right><input type=submit value="Parse RDF">
							 | 
						||
| 
								 | 
							
								</table>
							 | 
						||
| 
								 | 
							
								</form>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<h4><hr>Notes<hr></h4
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<dl>
							 | 
						||
| 
								 | 
							
								<dt><b><em>rdf:</em>resource, etc.</b><dd>
							 | 
						||
| 
								 | 
							
								The specification and discussion on the rdf interest group yielded no
							 | 
						||
| 
								 | 
							
								satisfactory solution how to deal with RDF attributes that are not in
							 | 
						||
| 
								 | 
							
								the RDF namespace such as <b>ID</b>, <b>resource</b>, etc. This parser
							 | 
						||
| 
								 | 
							
								interprets such attributes in the namespace of the element, so the
							 | 
						||
| 
								 | 
							
								statement below is not interpreted as a <b>propertyElt</b> with value
							 | 
						||
| 
								 | 
							
								<code>me</code> but as a <b>typedNode</b> with predicate
							 | 
						||
| 
								 | 
							
								<code>resource</code> and value <b>literal(</b>me<b>)</b>.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<pre>
							 | 
						||
| 
								 | 
							
								  <s:Creator resource="#me">
							 | 
						||
| 
								 | 
							
								</pre>
							 | 
						||
| 
								 | 
							
								</dl>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<!---------------------------------------------------------------->
							 | 
						||
| 
								 | 
							
								<!-- EXAMPLES -->
							 | 
						||
| 
								 | 
							
								<!---------------------------------------------------------------->
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								<script language="JavaScript">
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function ex1()
							 | 
						||
| 
								 | 
							
								{ document.rdf.rdf.value='<?xml version="1.0"?>\n\
							 | 
						||
| 
								 | 
							
								\n\
							 | 
						||
| 
								 | 
							
								<!-- Example from REC-rdf-syntax -->\n\
							 | 
						||
| 
								 | 
							
								\n\
							 | 
						||
| 
								 | 
							
								<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"\n\
							 | 
						||
| 
								 | 
							
								         xmlns:s="http://description.org/schema/">\n\
							 | 
						||
| 
								 | 
							
								  <rdf:Description about="http://www.w3.org/Home/Lassila">\n\
							 | 
						||
| 
								 | 
							
								     <s:Creator>Ora Lassila</s:Creator>\n\
							 | 
						||
| 
								 | 
							
								  </rdf:Description>\n\
							 | 
						||
| 
								 | 
							
								</rdf:RDF>';
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function ex2()
							 | 
						||
| 
								 | 
							
								{ document.rdf.rdf.value='<?xml version="1.0"?>\n\
							 | 
						||
| 
								 | 
							
								\n\
							 | 
						||
| 
								 | 
							
								<!-- Example from REC-rdf-syntax, demonstrating reification -->\n\
							 | 
						||
| 
								 | 
							
								\n\
							 | 
						||
| 
								 | 
							
								<rdf:RDF\n\
							 | 
						||
| 
								 | 
							
								  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"\n\
							 | 
						||
| 
								 | 
							
								  xmlns:s="http://description.org/schema/">\n\
							 | 
						||
| 
								 | 
							
								  <rdf:Description about="http://www.w3.org/Home/Lassila" bagID="D_001">\n\
							 | 
						||
| 
								 | 
							
								    <s:Creator>Ora Lassila</s:Creator>\n\
							 | 
						||
| 
								 | 
							
								    <s:Title>Ora\'s Home Page</s:Title>\n\
							 | 
						||
| 
								 | 
							
								  </rdf:Description>\n\
							 | 
						||
| 
								 | 
							
								</rdf:RDF>';
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function ex3()
							 | 
						||
| 
								 | 
							
								{ document.rdf.rdf.value='<?xml version="1.0"?>\n\
							 | 
						||
| 
								 | 
							
								\n\
							 | 
						||
| 
								 | 
							
								<!-- Example from REC-rdf-syntax, non-binary relations -->\n\
							 | 
						||
| 
								 | 
							
								\n\
							 | 
						||
| 
								 | 
							
								<rdf:RDF\n\
							 | 
						||
| 
								 | 
							
								  xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"\n\
							 | 
						||
| 
								 | 
							
								  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"\n\
							 | 
						||
| 
								 | 
							
								  xmlns:n="http://www.nist.gov/units/">\n\
							 | 
						||
| 
								 | 
							
								  <Description about="John_Smith">\n\
							 | 
						||
| 
								 | 
							
								    <n:weight rdf:parseType="Resource">\n\
							 | 
						||
| 
								 | 
							
								      <rdf:value>200</rdf:value>\n\
							 | 
						||
| 
								 | 
							
								      <n:units rdf:resource="http://www.nist.gov/units/Pounds"/>\n\
							 | 
						||
| 
								 | 
							
								    </n:weight>\n\
							 | 
						||
| 
								 | 
							
								  </Description>\n\
							 | 
						||
| 
								 | 
							
								</rdf:RDF>';
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function ex19()
							 | 
						||
| 
								 | 
							
								{ document.rdf.rdf.value='<?xml version="1.0"?>\n\
							 | 
						||
| 
								 | 
							
								\n\
							 | 
						||
| 
								 | 
							
								<!-- Example 19: Complete example of a RDF collection of nodes\n\
							 | 
						||
| 
								 | 
							
								     using rdf:parseType="Collection" -->\n\
							 | 
						||
| 
								 | 
							
								\n\
							 | 
						||
| 
								 | 
							
								<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"\n\
							 | 
						||
| 
								 | 
							
								         xmlns:ex="http://example.org/stuff/1.0/">\n\
							 | 
						||
| 
								 | 
							
								  <rdf:Description rdf:about="http://example.org/basket">\n\
							 | 
						||
| 
								 | 
							
								    <ex:hasFruit rdf:parseType="Collection">\n\
							 | 
						||
| 
								 | 
							
								      <rdf:Description rdf:about="http://example.org/banana"/>\n\
							 | 
						||
| 
								 | 
							
								      <rdf:Description rdf:about="http://example.org/apple"/>\n\
							 | 
						||
| 
								 | 
							
								      <rdf:Description rdf:about="http://example.org/pear"/>\n\
							 | 
						||
| 
								 | 
							
								    </ex:hasFruit>\n\
							 | 
						||
| 
								 | 
							
								  </rdf:Description>\n\
							 | 
						||
| 
								 | 
							
								</rdf:RDF>';
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								</script>
							 | 
						||
| 
								 | 
							
								</body>
							 | 
						||
| 
								 | 
							
								</html>
							 |