org.w3c.rdf.implementation.syntax.sirpac
Class SiRPAC

java.lang.Object
  |
  +--org.w3c.rdf.implementation.syntax.sirpac.SiRPAC

public class SiRPAC
extends java.lang.Object
implements EntityResolver, DTDHandler, DocumentHandler, RDFParser

Modified version of SiRPAC adapted to support the new API, streaming, robust parsing etc.


Field Summary
static java.lang.String RDFMS
           
static java.lang.String RDFSCHEMA
           
static java.lang.String REVISION
           
static java.lang.String XMLSCHEMA
           
 
Constructor Summary
SiRPAC()
           
SiRPAC(java.lang.String sXMLParser)
           
 
Method Summary
 void addError(java.lang.String sMsg)
          Generate an error message as a string
 void addTriple(Resource predicate, Resource subject, RDFNode object)
          Create a new triple and add it to the m_triples Vector
protected  void addTriple(Statement s)
           
 void addWarning(java.lang.String sMsg)
          Generate a warning message as a string
 void characters(char[] ch, int start, int length)
           
 void createBags(boolean b)
          createBags method allows one to determine whether SiRPAC produces Bag instances for each Description block.
 Literal createLiteral(java.lang.String str, boolean isXML)
           
static Parser createParser(java.lang.String className)
           
 Resource createResource(java.lang.String str)
          This method adds a warning for each name (element & attribute) which looks like it is from RDF but it is not.
 void doctype(java.lang.String name, java.lang.String publicID, java.lang.String systemID)
           
 void endDocument()
           
 void endElement(java.lang.String name)
          For each end of an element scope step back in the element and namespace stack
 void fetchSchema(java.lang.String sURI)
           
 void fetchSchemas(boolean b)
          Set whether parser recursively fetches and parses every RDF schema it finds in the namespace declarations
 InputSource getRDFSource()
           
 void ignorableWhitespace(char[] ch, int start, int length)
           
 boolean isAlternative(Element e)
          Is the element an Alternative
 boolean isBag(Element e)
          Is the element a Bag
 boolean isContainer(Element e)
          Is the element a Container
 boolean isDescription(Element e)
          Is the element a Description
 boolean isListItem(Element e)
          Is the element a ListItem
 boolean isRDF(Element e)
          Check if the element e is from the namespace of the RDF schema by comparing only the beginning of the expanded element name with the canonical RDFMS URI
 boolean isRDFroot(Element e)
           
 boolean isSequence(Element e)
          Is the element a Sequence
 boolean isTypedPredicate(Element e)
          This method matches all properties but those from RDF namespace
 java.util.Enumeration listNamespaces()
          Return all non-RDF namespace URIs recognized by the parser
 Element lookforNode(java.lang.String sID)
          Look for a node by name sID from the Hashtable m_hIDtable of all registered IDs.
static void main(java.lang.String[] args)
          main method for running SiRPAC as an application
 void makeMarkupChar(java.lang.String s)
           
 void makeMarkupET(java.lang.String name)
           
 void makeMarkupST(Element ele)
           
 java.lang.String namespace(java.lang.String sPrefix)
          Return the full namespace URI for a given prefix sPrefix.
 java.lang.String newReificationID()
          Create a new reification ID by using a name part and an incremental counter m_iReificationCounter.
 void notationDecl(java.lang.String name, java.lang.String publicId, java.lang.String systemId)
           
 void parse(InputSource source, RDFConsumer consumer)
           
 boolean parseLiteral()
          Methods to determine whether we are parsing parseType="Literal" or parseType="Resource"
 boolean parseResource()
           
 boolean preserveWhiteSpace()
           
 java.lang.String processDescription(Element description, boolean inPredicate, boolean reify, boolean createBag)
          processDescription manages Description elements
 void processingInstruction(java.lang.String target, java.lang.String data)
           
 void processRDF(Element rdf)
          Start processing an RDF/XML document instance from the root element rdf.
 java.lang.String processTypedNode(Element typedNode)
          Manage the typedNode production in the RDF grammar.
 void processXML(Element ele)
          Given an XML document (well-formed HTML, for example), look for a suitable element to start parsing from
 void registerID(java.lang.String sID, Element e)
          Add an element e to the Hashtable m_hIDtable which stores all nodes with an ID
 void registerResource(Element e)
          Add an element e to the Vector m_vResources which stores all nodes with an URI
 void resolve()
          Go through the m_vResolveQueue and assign direct object reference for each symbolic reference
 InputSource resolveEntity(java.lang.String publicId, java.lang.String systemId)
           
 void resolveLater(Element e)
          Add the element e to the m_vResolveQueue to be resolved later.
 Element root()
          Return the root element pointer.
 void setDocumentLocator(Locator locator)
           
 void setErrorHandler(ErrorHandler handler)
           
 void setRDFSource(InputSource source)
          Notify all registered consumers that were are at the end of the parsing process
 void setRobustMode(boolean b)
           
 void setSource(java.lang.String sSource)
          setSource methods saves the name of the source document for later inspection if needed
 void setStreamMode(boolean b)
           
 java.lang.String source()
           
 void startDocument()
           
 void startElement(java.lang.String name, AttributeList al)
          Called for each new element.
 void unparsedEntityDecl(java.lang.String name, java.lang.String publicId, java.lang.String systemId, java.lang.String notationName)
          Display unparsed entity declarations as they are reported.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

REVISION

public static final java.lang.String REVISION

RDFMS

public static final java.lang.String RDFMS

RDFSCHEMA

public static final java.lang.String RDFSCHEMA

XMLSCHEMA

public static final java.lang.String XMLSCHEMA
Constructor Detail

SiRPAC

public SiRPAC()

SiRPAC

public SiRPAC(java.lang.String sXMLParser)
Method Detail

addWarning

public void addWarning(java.lang.String sMsg)
                throws SAXException
Generate a warning message as a string

addError

public void addError(java.lang.String sMsg)
              throws SAXException
Generate an error message as a string

parseLiteral

public boolean parseLiteral()
Methods to determine whether we are parsing parseType="Literal" or parseType="Resource"

parseResource

public boolean parseResource()

preserveWhiteSpace

public boolean preserveWhiteSpace()

createBags

public void createBags(boolean b)
createBags method allows one to determine whether SiRPAC produces Bag instances for each Description block. The default setting is to generate them.

fetchSchemas

public void fetchSchemas(boolean b)
Set whether parser recursively fetches and parses every RDF schema it finds in the namespace declarations

setSource

public void setSource(java.lang.String sSource)
setSource methods saves the name of the source document for later inspection if needed

source

public java.lang.String source()

listNamespaces

public java.util.Enumeration listNamespaces()
Return all non-RDF namespace URIs recognized by the parser

namespace

public java.lang.String namespace(java.lang.String sPrefix)
                           throws SAXException
Return the full namespace URI for a given prefix sPrefix. The default namespace is identified with xmlns prefix. The namespace of xmlns attribute is an empty string.

setRDFSource

public void setRDFSource(InputSource source)
Notify all registered consumers that were are at the end of the parsing process

getRDFSource

public InputSource getRDFSource()

setErrorHandler

public void setErrorHandler(ErrorHandler handler)
Specified by:
setErrorHandler in interface RDFParser

parse

public void parse(InputSource source,
                  RDFConsumer consumer)
           throws SAXException
Specified by:
parse in interface RDFParser

resolveEntity

public InputSource resolveEntity(java.lang.String publicId,
                                 java.lang.String systemId)
Specified by:
resolveEntity in interface EntityResolver

notationDecl

public void notationDecl(java.lang.String name,
                         java.lang.String publicId,
                         java.lang.String systemId)
Specified by:
notationDecl in interface DTDHandler

unparsedEntityDecl

public void unparsedEntityDecl(java.lang.String name,
                               java.lang.String publicId,
                               java.lang.String systemId,
                               java.lang.String notationName)
Display unparsed entity declarations as they are reported.
Specified by:
unparsedEntityDecl in interface DTDHandler
See Also:
DTDHandler.unparsedEntityDecl(java.lang.String, java.lang.String, java.lang.String, java.lang.String)

setDocumentLocator

public void setDocumentLocator(Locator locator)
Specified by:
setDocumentLocator in interface DocumentHandler

startDocument

public void startDocument()
Specified by:
startDocument in interface DocumentHandler

endDocument

public void endDocument()
                 throws SAXException
Specified by:
endDocument in interface DocumentHandler

doctype

public void doctype(java.lang.String name,
                    java.lang.String publicID,
                    java.lang.String systemID)

startElement

public void startElement(java.lang.String name,
                         AttributeList al)
                  throws SAXException
Called for each new element. Build up the document tree using an element stack
Specified by:
startElement in interface DocumentHandler
Throws:
SAXException - Passed on since we don't handle it.

endElement

public void endElement(java.lang.String name)
                throws SAXException
For each end of an element scope step back in the element and namespace stack
Specified by:
endElement in interface DocumentHandler
Throws:
SAXException - Passed on since we don't handle it.

root

public Element root()
Return the root element pointer. This requires the parsing has been already done.

characters

public void characters(char[] ch,
                       int start,
                       int length)
                throws SAXException
Specified by:
characters in interface DocumentHandler

ignorableWhitespace

public void ignorableWhitespace(char[] ch,
                                int start,
                                int length)
Specified by:
ignorableWhitespace in interface DocumentHandler

processingInstruction

public void processingInstruction(java.lang.String target,
                                  java.lang.String data)
Specified by:
processingInstruction in interface DocumentHandler

createParser

public static Parser createParser(java.lang.String className)

processXML

public void processXML(Element ele)
                throws SAXException,
                       ModelException
Given an XML document (well-formed HTML, for example), look for a suitable element to start parsing from
Throws:
SAXException - Passed on since we don't handle it.

fetchSchema

public void fetchSchema(java.lang.String sURI)

processRDF

public void processRDF(Element rdf)
                throws SAXException,
                       ModelException
Start processing an RDF/XML document instance from the root element rdf.
Throws:
SAXException - Passed on since we don't handle it.

processTypedNode

public java.lang.String processTypedNode(Element typedNode)
                                  throws SAXException,
                                         ModelException
Manage the typedNode production in the RDF grammar.
Throws:
SAXException - Passed on since we don't handle it.

processDescription

public java.lang.String processDescription(Element description,
                                           boolean inPredicate,
                                           boolean reify,
                                           boolean createBag)
                                    throws SAXException,
                                           ModelException
processDescription manages Description elements
Parameters:
description - The Description element itself
inPredicate - Is this is a nested description
reify - Do we need to reify
createBag - Do we create a bag container
Returns:
An ID for the description
Throws:
SAXException - Passed on since we don't handle it.

addTriple

protected void addTriple(Statement s)
                  throws SAXException,
                         ModelException

addTriple

public void addTriple(Resource predicate,
                      Resource subject,
                      RDFNode object)
               throws SAXException,
                      ModelException
Create a new triple and add it to the m_triples Vector

isDescription

public boolean isDescription(Element e)
Is the element a Description

isListItem

public boolean isListItem(Element e)
Is the element a ListItem

isContainer

public boolean isContainer(Element e)
Is the element a Container
See Also:
isSequence, isAlternative, isBag

isSequence

public boolean isSequence(Element e)
Is the element a Sequence

isAlternative

public boolean isAlternative(Element e)
Is the element an Alternative

isBag

public boolean isBag(Element e)
Is the element a Bag

isTypedPredicate

public boolean isTypedPredicate(Element e)
This method matches all properties but those from RDF namespace

isRDFroot

public boolean isRDFroot(Element e)

isRDF

public boolean isRDF(Element e)
Check if the element e is from the namespace of the RDF schema by comparing only the beginning of the expanded element name with the canonical RDFMS URI

setStreamMode

public void setStreamMode(boolean b)

setRobustMode

public void setRobustMode(boolean b)

resolveLater

public void resolveLater(Element e)
Add the element e to the m_vResolveQueue to be resolved later.

resolve

public void resolve()
             throws SAXException
Go through the m_vResolveQueue and assign direct object reference for each symbolic reference

lookforNode

public Element lookforNode(java.lang.String sID)
Look for a node by name sID from the Hashtable m_hIDtable of all registered IDs.

registerID

public void registerID(java.lang.String sID,
                       Element e)
                throws SAXException
Add an element e to the Hashtable m_hIDtable which stores all nodes with an ID

newReificationID

public java.lang.String newReificationID()
Create a new reification ID by using a name part and an incremental counter m_iReificationCounter.

registerResource

public void registerResource(Element e)
Add an element e to the Vector m_vResources which stores all nodes with an URI

makeMarkupST

public void makeMarkupST(Element ele)

makeMarkupET

public void makeMarkupET(java.lang.String name)

makeMarkupChar

public void makeMarkupChar(java.lang.String s)

createResource

public Resource createResource(java.lang.String str)
                        throws ModelException
This method adds a warning for each name (element & attribute) which looks like it is from RDF but it is not. Note: this method is useful for interactive use but can be omitted from embedded applications.

createLiteral

public Literal createLiteral(java.lang.String str,
                             boolean isXML)
                      throws ModelException

main

public static void main(java.lang.String[] args)
                 throws java.lang.Exception
main method for running SiRPAC as an application