Experiment with porting SGML to YAP, and trying to preserve SWI code as much
as possible.
This commit is contained in:
177
packages/sgml/RDF/online.html
Normal file
177
packages/sgml/RDF/online.html
Normal file
@@ -0,0 +1,177 @@
|
||||
<!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>
|
||||
Reference in New Issue
Block a user