de.fuberlin.wiwiss.d2rq.map
Class MapParser

java.lang.Object
  extended byde.fuberlin.wiwiss.d2rq.map.MapParser

public class MapParser
extends java.lang.Object

Creates D2RQ domain classes (like PropertyBridge, TranslationTable from a Jena model representation of a D2RQ mapping file. Checks the map for consistency.

History:
08-03-2004: Initial version of this class.

Version:
V0.2
Author:
Richard Cyganiak

Field Summary
private  java.util.Map classMaps
           
private  java.util.Set columnResourceMakers
           
private static java.util.Map d2rqColumnTypeToDatabaseColumnType
           
private  java.util.Map databases
           
private  com.hp.hpl.jena.graph.Graph graph
           
private  com.hp.hpl.jena.rdf.model.Model model
           
private  java.util.Set patternResourceMakers
           
private  com.hp.hpl.jena.shared.PrefixMapping prefixes
           
private  java.util.Map processingInstructions
           
private  java.util.Map propertyBridges
           
private  java.util.Map resourcesConditionsMap
           
private  java.util.Map resourcesDatabasesMap
           
private  java.util.Map translationTables
           
private  java.util.Set uniqueNodeMakers
           
 
Constructor Summary
MapParser(com.hp.hpl.jena.rdf.model.Model mapModel)
          Constructs a new MapParser from a Jena model containing the RDF statements from a D2RQ mapping file.
 
Method Summary
private  void addRDFTypePropertyBridge(com.hp.hpl.jena.graph.Node toClassMap, com.hp.hpl.jena.graph.Node rdfsClass)
           
private  void addRDFTypePropertyBridges()
           
private  void assertHasColumnTypes(NodeMaker nodeMaker, Database db)
           
private  void buildClassMap(com.hp.hpl.jena.graph.Node node, Database db)
           
private  void buildDatabase(com.hp.hpl.jena.graph.Node node)
           
private  void buildPropertyBridge(com.hp.hpl.jena.graph.Node node, NodeMaker resourceMaker)
           
private  boolean containsDuplicates(com.hp.hpl.jena.graph.Node node)
           
private  PropertyBridge createPropertyBridge(com.hp.hpl.jena.graph.Node node, NodeMaker subjects, NodeMaker predicates, NodeMaker objects, java.util.Set joins, java.util.Map aliasses)
           
private  java.util.Set findLiterals(com.hp.hpl.jena.graph.Node subject, com.hp.hpl.jena.graph.Node predicate)
           
private  java.util.Map findLiteralsAsMap(com.hp.hpl.jena.graph.Node subject, com.hp.hpl.jena.graph.Node predicate)
           
private  java.util.Map findLiteralsAsMap(com.hp.hpl.jena.graph.Node subject, com.hp.hpl.jena.graph.Node predicate, java.util.Map predicateToObjectMap)
           
private  java.util.Map findLiteralsAsMap(com.hp.hpl.jena.graph.Node subject, com.hp.hpl.jena.graph.Node predicate, java.util.Map predicateToObjectMap, boolean objectIsKey, boolean warnIfNotLiteral)
           
private  java.lang.String findOneLiteral(com.hp.hpl.jena.graph.Node subject, com.hp.hpl.jena.graph.Node predicate)
           
private  java.lang.String findOneLiteralOrURI(com.hp.hpl.jena.graph.Node subject, com.hp.hpl.jena.graph.Node predicate)
           
private  com.hp.hpl.jena.graph.Node findOneNode(com.hp.hpl.jena.graph.Node subject, com.hp.hpl.jena.graph.Node predicate)
           
private  com.hp.hpl.jena.graph.Node findPropertyForBridge(com.hp.hpl.jena.graph.Node bridge)
           
private  java.lang.String findZeroOrOneLiteral(com.hp.hpl.jena.graph.Node subject, com.hp.hpl.jena.graph.Node predicate)
           
private  java.lang.String findZeroOrOneLiteralOrURI(com.hp.hpl.jena.graph.Node subject, com.hp.hpl.jena.graph.Node predicate)
           
private  com.hp.hpl.jena.graph.Node findZeroOrOneNode(com.hp.hpl.jena.graph.Node subject, com.hp.hpl.jena.graph.Node predicate)
           
 java.util.Collection getClassMaps()
           
private  Database getDatabase(NodeMaker resourceMaker)
           
 java.util.Collection getDatabases()
           
 java.util.Map getProcessingInstructions()
           
 java.util.Collection getPropertyBridges()
           
private  com.hp.hpl.jena.rdf.model.Resource getResourceFromNode(com.hp.hpl.jena.graph.Node node)
           
 TranslationTable getTranslationTable(com.hp.hpl.jena.graph.Node node)
           
private  void inferColumnTypesFromJoins(java.util.Collection joins, NodeMaker resourceMaker)
           
 void parse()
          Starts the parsing process.
private  void parseAdditionalProperties()
           
private  void parseClassMaps()
           
private  void parseDatabases()
           
private  void parseProcessingInstructions()
           
private  void parsePropertyBridges()
           
private  java.lang.String toQName(com.hp.hpl.jena.graph.Node node)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

model

private com.hp.hpl.jena.rdf.model.Model model

graph

private com.hp.hpl.jena.graph.Graph graph

databases

private java.util.Map databases

classMaps

private java.util.Map classMaps

translationTables

private java.util.Map translationTables

propertyBridges

private java.util.Map propertyBridges

resourcesConditionsMap

private java.util.Map resourcesConditionsMap

resourcesDatabasesMap

private java.util.Map resourcesDatabasesMap

columnResourceMakers

private java.util.Set columnResourceMakers

patternResourceMakers

private java.util.Set patternResourceMakers

uniqueNodeMakers

private java.util.Set uniqueNodeMakers

prefixes

private com.hp.hpl.jena.shared.PrefixMapping prefixes

processingInstructions

private java.util.Map processingInstructions

d2rqColumnTypeToDatabaseColumnType

private static java.util.Map d2rqColumnTypeToDatabaseColumnType
Constructor Detail

MapParser

public MapParser(com.hp.hpl.jena.rdf.model.Model mapModel)
Constructs a new MapParser from a Jena model containing the RDF statements from a D2RQ mapping file.

Parameters:
mapModel - a Jena model containing the RDF statements from a D2RQ mapping file
Method Detail

parse

public void parse()
Starts the parsing process. Must be called before results can be retrieved from the getter methods.


getDatabases

public java.util.Collection getDatabases()

getClassMaps

public java.util.Collection getClassMaps()

getPropertyBridges

public java.util.Collection getPropertyBridges()

getProcessingInstructions

public java.util.Map getProcessingInstructions()

parseProcessingInstructions

private void parseProcessingInstructions()

parseDatabases

private void parseDatabases()

buildDatabase

private void buildDatabase(com.hp.hpl.jena.graph.Node node)

parseClassMaps

private void parseClassMaps()

buildClassMap

private void buildClassMap(com.hp.hpl.jena.graph.Node node,
                           Database db)

containsDuplicates

private boolean containsDuplicates(com.hp.hpl.jena.graph.Node node)

assertHasColumnTypes

private void assertHasColumnTypes(NodeMaker nodeMaker,
                                  Database db)

getTranslationTable

public TranslationTable getTranslationTable(com.hp.hpl.jena.graph.Node node)

parsePropertyBridges

private void parsePropertyBridges()

buildPropertyBridge

private void buildPropertyBridge(com.hp.hpl.jena.graph.Node node,
                                 NodeMaker resourceMaker)

createPropertyBridge

private PropertyBridge createPropertyBridge(com.hp.hpl.jena.graph.Node node,
                                            NodeMaker subjects,
                                            NodeMaker predicates,
                                            NodeMaker objects,
                                            java.util.Set joins,
                                            java.util.Map aliasses)

inferColumnTypesFromJoins

private void inferColumnTypesFromJoins(java.util.Collection joins,
                                       NodeMaker resourceMaker)

getDatabase

private Database getDatabase(NodeMaker resourceMaker)

findPropertyForBridge

private com.hp.hpl.jena.graph.Node findPropertyForBridge(com.hp.hpl.jena.graph.Node bridge)

parseAdditionalProperties

private void parseAdditionalProperties()

addRDFTypePropertyBridges

private void addRDFTypePropertyBridges()

addRDFTypePropertyBridge

private void addRDFTypePropertyBridge(com.hp.hpl.jena.graph.Node toClassMap,
                                      com.hp.hpl.jena.graph.Node rdfsClass)

getResourceFromNode

private com.hp.hpl.jena.rdf.model.Resource getResourceFromNode(com.hp.hpl.jena.graph.Node node)

findZeroOrOneLiteral

private java.lang.String findZeroOrOneLiteral(com.hp.hpl.jena.graph.Node subject,
                                              com.hp.hpl.jena.graph.Node predicate)

findZeroOrOneLiteralOrURI

private java.lang.String findZeroOrOneLiteralOrURI(com.hp.hpl.jena.graph.Node subject,
                                                   com.hp.hpl.jena.graph.Node predicate)

findZeroOrOneNode

private com.hp.hpl.jena.graph.Node findZeroOrOneNode(com.hp.hpl.jena.graph.Node subject,
                                                     com.hp.hpl.jena.graph.Node predicate)

findOneNode

private com.hp.hpl.jena.graph.Node findOneNode(com.hp.hpl.jena.graph.Node subject,
                                               com.hp.hpl.jena.graph.Node predicate)

findOneLiteral

private java.lang.String findOneLiteral(com.hp.hpl.jena.graph.Node subject,
                                        com.hp.hpl.jena.graph.Node predicate)

findOneLiteralOrURI

private java.lang.String findOneLiteralOrURI(com.hp.hpl.jena.graph.Node subject,
                                             com.hp.hpl.jena.graph.Node predicate)

findLiterals

private java.util.Set findLiterals(com.hp.hpl.jena.graph.Node subject,
                                   com.hp.hpl.jena.graph.Node predicate)

findLiteralsAsMap

private java.util.Map findLiteralsAsMap(com.hp.hpl.jena.graph.Node subject,
                                        com.hp.hpl.jena.graph.Node predicate)

findLiteralsAsMap

private java.util.Map findLiteralsAsMap(com.hp.hpl.jena.graph.Node subject,
                                        com.hp.hpl.jena.graph.Node predicate,
                                        java.util.Map predicateToObjectMap)

findLiteralsAsMap

private java.util.Map findLiteralsAsMap(com.hp.hpl.jena.graph.Node subject,
                                        com.hp.hpl.jena.graph.Node predicate,
                                        java.util.Map predicateToObjectMap,
                                        boolean objectIsKey,
                                        boolean warnIfNotLiteral)

toQName

private java.lang.String toQName(com.hp.hpl.jena.graph.Node node)