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> |