This repository has been archived on 2023-08-20. You can view files and clone it, but cannot push or open issues or pull requests.
yap-6.3/packages/sgml/RDF/online.html
2009-03-13 19:39:06 +00:00

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 (&lt; 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>
&lt;s:Creator resource="#me"&gt;
</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>