1 / 9

D2R-Q

D2R-Q. Work together with Andy, Chris and Kevin Goal: Query huge, live, non-RDF data bases with RDQL Allow access to existing databases Allow a more efficient storage of application specific RDF data Approach: Develop a declarative mapping language, that allows to

dimaia
Download Presentation

D2R-Q

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. D2R-Q • Work together with Andy, Chris and Kevin • Goal: Query huge, live, non-RDF data bases with RDQL • Allow access to existing databases • Allow a more efficient storage of application specific RDF data • Approach: • Develop a declarative mapping language, that allows to • rewrite RDQL and find(spo) queries to application specific SQL queries. • Redesign my D2R MAP language • Implement it as a Jena graph

  2. D2R-Q Architecture RDFApp Query +Update Query App-specificdatabase Jena extended with D2R-Q Graph Non-RDFApp Joseki Uses D2R-Q MAP

  3. iswc:Person iswc:name DtPropertyBridge uriPattern iswc:email ObjPropertyBridge ClassMap:Person iswc:authorOf ObjPropertyBridge rdf:type Datasource 1 ObjPropertyBridge owl:sameAs ObjPropertyBridge iswc:title DtPropertyBridge ClassMap:Paper uriPattern iswc:abstract DtPropertyBridge iswc:Paper iswc:topName DtPropertyBridge iswc:topDescr. DtPropertyBridge ClassMap:Topic Datasource 2 uriPattern rdf:type iswc:Topic Structure of a D2R-Q MAP

  4. Example • Part of a map about authors, papers and conferences: :InProceedings rdf:type rdfs:Class ; d2r:classMap db1:InProceedings . db1:InProceedings rdf:type d2r:ClassMap; d2r:uriPattern "http://www.example.org/ db01#Paper@@Papers.PaperID@@"; d2r:dataStorage db1:Database1 . :title rdf:type rdf:Property ; d2r:propertyBridge db1:inProceedingsTitle . db1:inProceedingsTitle rdf:type d2r:DatatypePropertyBridge ; d2r:column "Papers.Title" ; d2r:belongsToClassMap db1:InProceedings ; d2r:dataType dtype:string . :author rdf:type rdf:Property ; d2r:propertyBridge db1:inProceedingsAuthor. db1:inProceedingsAuthor rdf:type d2r:ObjectPropertyBridge ; d2r:join "Papers.PaperID = Rel_Person_Paper.PaperID" ; d2r:join "Rel_Person_Paper.PaperID = Persons.PerID" ; d2r:belongsToClassMap db1:InProceedings; d2r:refersToClassMap db1:PersonsClassGroupMap .

  5. Example Query find(s p o) • Find (ANY, iswc:title, “RDF in XML“) • Algorithm • Look at Predicate • Find ClassMaps • Get ColumnNames • Get Tables • Execute SQL • Return results • SQL :InProceedings rdf:type rdfs:Class ; d2r:classMap db1:InProceedings . db1:InProceedings rdf:type d2r:ClassMap; d2r:uriPattern "http://www.example.org/ db01#Paper@@Papers.PaperID@@"; d2r:dataStorage db1:Database1 . :title rdf:type rdf:Property ; d2r:propertyBridge db1:inProceedingsTitle . db1:inProceedingsTitle rdf:type d2r:DatatypePropertyBridge ; d2r:column "Papers.Title" ; d2r:belongsToClassMap db1:InProceedings ; d2r:dataType dtype:string. SELECT Papers.PaperIDFROM PapersWHERE Papers.Title = “RDF in XML”;

  6. Example Query find(s p o) with a Many-to-Many Join • Find(ANY, iswc:author, http//:www.persons.org#P1234) • Algorithm • Look at Predicate • Find ClassMaps • Find ReferedMaps • Get ColumnNames • Get Tables • Execute SQL • SQL :author rdf:type rdf:Property ; d2r:propertyBridge db1:inProceedingsAuthor. db1:inProceedingsAuthor rdf:type d2r:ObjectPropertyBridge ; d2r:join "Papers.PaperID = Rel_Person_Paper.PaperID" ; d2r:join "Rel_Person_Paper.PaperID = Persons.PerID" ; d2r:belongsToClassMap db1:InProceedings; d2r:refersToClassMap db1:PersonsClassMap . SELECT Papers.PaperIDFROM Papers, Persons, Rel_Person_Paper WHERE Papers.PaperID = Rel_Person_Paper.PaperID AND Rel_Person_Paper.PaperID = Persons.PerID AND Persons. PersonID = 1234;

  7. Query Performance find(s p o) • find (?x p o) OK (I guess) • find (?x p ?z) OK • find (s p ?z) OK • find (s p o) OK • find (s ?x ?y) slow • find (?x ?y o) very slow • find (?x ?y ?z) db dump  Use Pattern groups, because they contain more usable information.

  8. Pattern Groups • Second step: Use Pattern groups because they contain more information useable for query optimization. • WHERE part of a RDQL query • Find all author with papers at "TheConference" results in one SQL statement. (?x iswc:eventTitle "TheConference") (?y iswc:conference ?x) (?y iswc:author ?z)

  9. D2R-Q: Status Quo • Language designed • Algorithms designed • Paper tests with two relatively complex ontologies and database schemata (including taxonomies and many-to-many relationships). • Implementation started • D2RQGraph implements Jena Graph • D2RQQueryHandler implements Jena QueryHandler. • D2R-Q will be available under an open source license sometime in May.

More Related