Inductive Triple Graphs: A Purely Functional Approach to Represent RDF

  • Jose Emilio Labra Gayo
  • Johan Jeuring
  • Jose María Álvarez Rodríguez
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 8323)


RDF is one of the cornerstones of the Semantic Web. It can be considered as a knowledge representation common language based on a graph model. In the functional programming community, inductive graphs have been proposed as a purely functional representation of graphs, which makes reasoning and concurrent programming simpler. In this paper, we propose a simplified representation of inductive graphs, called Inductive Triple Graphs, which can be used to represent RDF in a purely functional way. We show how to encode blank nodes using existential variables, and we describe two implementations of our approach in Haskell and Scala.


Resource Description Framework Functional Programming Resource Description Framework Data Resource Description Framework Graph Triple Graph 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Carroll, J.J., Klyne, G.: Resource description framework (RDF): Concepts and abstract syntax. W3C recommendation, W3C (February 2004),
  2. 2.
    Chlipala, A.J.: Parametric higher-order abstract syntax for mechanized semantics. In: Hook, J., Thiemann, P. (eds.) Proceeding of the 13th ACM SIGPLAN International Conference on Functional Programming, ICFP 2008, Victoria, BC, Canada, September 20-28, pp. 143–156. ACM (2008)Google Scholar
  3. 3.
    Claessen, K., Ljunglöf, P.: Typed logical variables in Haskell. In: Proceedings of Haskell Workshop, Montreal, Canada, University of Nottingham, Technical Report (2000)Google Scholar
  4. 4.
    Clark, K.L.: Negation as failure. In: Gallaire, H., Minker, J. (eds.) Logic and Databases, pp. 293–322. Plenum Press (1978)Google Scholar
  5. 5.
    Cyganiak, R., Wood, D.: Resource description framework (RDF): Concepts and abstract syntax. W3C working draft, W3C (January 2013),
  6. 6.
    Becket, D., Prud’hommeaux, E., Berners-Lee, T., Carothers, G.: Turtle, terse RDF triple language. In: World Wide Web Consortium, Working Draft, WD-Turtle (July 2012)Google Scholar
  7. 7.
    Dürst, M., Suignard, M.: Internationalized resource identifiers. Technical Report 3987, IETF (2005)Google Scholar
  8. 8.
    Erwig, M.: Fully persistent graphs - which one to choose? In: Clack, C., Hammond, K., Davie, T. (eds.) IFL 1997. LNCS, vol. 1467, pp. 123–140. Springer, Heidelberg (1998)CrossRefGoogle Scholar
  9. 9.
    Erwig, M.: Functional programming with graphs. SIGPLAN Not. 32(8), 52–65 (1997)CrossRefGoogle Scholar
  10. 10.
    Erwig, M.: Inductive graphs and functional graph algorithms. J. Funct. Program. 11(5), 467–492 (2001)CrossRefzbMATHMathSciNetGoogle Scholar
  11. 11.
    Fegaras, L., Sheard, T.: Revisiting catamorphisms over datatypes with embedded functions (or, programs from outer space). In: Proceedings of the 23rd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 1996, pp. 284–294. ACM, New York (1996)Google Scholar
  12. 12.
    Hayes, J., Gutierrez, C.: Bipartite graphs as intermediate model for RDF. In: McIlraith, S.A., Plexousakis, D., van Harmelen, F. (eds.) ISWC 2004. LNCS, vol. 3298, pp. 47–61. Springer, Heidelberg (2004)CrossRefGoogle Scholar
  13. 13.
    Hughes, J.: Why Functional Programming Matters. Computer Journal 32(2), 98–107 (1989)CrossRefGoogle Scholar
  14. 14.
    Jeffrey, A.S.A., Patel-Schneider, P.F.: Integrity constraints for linked data. In: Proc. Int. Workshop Description Logics (2011)Google Scholar
  15. 15.
    Jeffrey, A.S.A., Patel-Schneider, P.F.: As XDuce is to XML so ? is to RDF: Programming languages for the semantic web. In: Proc. Off the Beaten Track: Workshop on Underrepresented Problems for Programming Language Researchers (2012)Google Scholar
  16. 16.
    Mallea, A., Arenas, M., Hogan, A., Polleres, A.: On blank nodes. In: Aroyo, L., Welty, C., Alani, H., Taylor, J., Bernstein, A., Kagal, L., Noy, N., Blomqvist, E. (eds.) ISWC 2011, Part I. LNCS, vol. 7031, pp. 421–437. Springer, Heidelberg (2011)CrossRefGoogle Scholar
  17. 17.
    Meijer, E., Fokkinga, M., Paterson, R., Hughes, J.: Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire. In: Hughes, J. (ed.) FPCA 1991. LNCS, vol. 523, pp. 124–144. Springer, Heidelberg (1991)CrossRefGoogle Scholar
  18. 18.
    Oliveira, B.C., Cook, W.R.: Functional programming with structured graphs. SIGPLAN Not. 47(9), 77–88 (2012)CrossRefGoogle Scholar
  19. 19.
    Seres, S., Spivey, J.M.: Embedding Prolog into Haskell. In: Proceedings of HASKELL 1999, Department of Computer Science, University of Utrecht (1999)Google Scholar

Copyright information

© Springer International Publishing Switzerland 2014

Authors and Affiliations

  • Jose Emilio Labra Gayo
    • 1
  • Johan Jeuring
    • 2
  • Jose María Álvarez Rodríguez
    • 3
  1. 1.University of OviedoSpain
  2. 2.Utrecht University, Open University of the NetherlandsThe Netherlands
  3. 3.South East European Research CenterGreece

Personalised recommendations