Online SWI-Prolog RDF parser demo
This page provides an online demonstration of an RDF parser written in SWI-Prolog and distributed as part of the
normal SWI-Prolog distribution. This RDF parser has a couple of attractive
properties:
- Small
-
Both in terms of source-code (< 1200 lines) and executable.
- Fast
-
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).
- Conforming
-
This parser conforms to http://www.w3.org/TR/rdf-syntax-grammar/,
W3C Working Draft 8 November 2002. It includes the revised bag
syntax,
xml:base
, parseType="Collection"
and nodeID
features.
- Prolog based
-
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.
- Portability
-
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.
- Discussion Page
-
There is a
discussion page on this parser on the SWI-Prolog collaborative
(twiki web)
A more detailed description of this packages is available in in this
document. The sources of the parser are included in the full
source for SWI-Prolog. The individual source files can also be
examined through the
cvsweb service.
Please write your RDF description into the text-area below or select a
local file using the File: item and submit it. If anything goes
wrong, please mail Jan
Wielemaker.
The RDF-data submitted is kept anonymously on our server and
might be used by us to examine problems with our RDF parser. We do not
publish this material. The result-page provides a form for
attaching a comment to the stored RDF statement.
Notes
rdf:resource, etc.
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 ID, resource, etc. This parser
interprets such attributes in the namespace of the element, so the
statement below is not interpreted as a propertyElt with value
me
but as a typedNode with predicate
resource
and value literal(me).
<s:Creator resource="#me">