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

File: |

####

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