  RDF data are used to model knowledge in various areas such as life sciences,
Semantic Web, bioinformatics, and social graphs. The size of real RDF data
reaches billions of triples. This calls for a framework for efficiently
processing RDF data. The core function of processing RDF data is subgraph
pattern matching. There have been two completely different directions for
supporting efficient subgraph pattern matching. One direction is to develop
specialized RDF query processing engines exploiting the properties of RDF data
for the last decade, while the other direction is to develop efficient subgraph
isomorphism algorithms for general, labeled graphs for over 30 years. Although
both directions have a similar goal (i.e., finding subgraphs in data graphs for
a given query graph), they have been independently researched without clear
reason. We argue that a subgraph isomorphism algorithm can be easily modified
to handle the graph homomorphism, which is the RDF pattern matching semantics,
by just removing the injectivity constraint. In this paper, based on the
state-of-the-art subgraph isomorphism algorithm, we propose an in-memory
solution, TurboHOM++, which is tamed for the RDF processing, and we compare it
with the representative RDF processing engines for several RDF benchmarks in a
server machine where billions of triples can be loaded in memory. In order to
speed up TurboHOM++, we also provide a simple yet effective transformation and
a series of optimization techniques. Extensive experiments using several RDF
benchmarks show that TurboHOM++ consistently and significantly outperforms the
representative RDF engines. Specifically, TurboHOM++ outperforms its
competitors by up to five orders of magnitude.
