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