/// <summary>
        /// Static-ctor to initialize structures needed by SemanticsUtilities
        /// </summary>
        static RDFSemanticsUtilities() {
            RDFSemanticsUtilities.DefaultClasses = new Dictionary<Int64, RDFOntologyClass>();

            //owl:Thing
            var owlThing      = new RDFOntologyClass(RDFVocabulary.OWL.THING);
            RDFSemanticsUtilities.DefaultClasses.Add(owlThing.PatternMemberID,    owlThing);

            //rdfs:Literal
            var rdfsLiteral   = new RDFOntologyClass(RDFVocabulary.RDFS.LITERAL);
            RDFSemanticsUtilities.DefaultClasses.Add(rdfsLiteral.PatternMemberID, rdfsLiteral);
            
            //rdfs:Literal subclassOf owl:Thing
            owlThing.DirectSubClasses.Add(rdfsLiteral.PatternMemberID,   rdfsLiteral);
            rdfsLiteral.DirectSuperClasses.Add(owlThing.PatternMemberID, owlThing);

            //rdfs:Datatype
            RDFDatatypeRegister.Instance.Register.ForEach(dt => {
                if (!dt.ToString().Equals(rdfsLiteral.ToString(), StringComparison.Ordinal)) {
                    var dtCls = new RDFOntologyClass(new RDFResource(dt.ToString()));
                    RDFSemanticsUtilities.DefaultClasses.Add(dtCls.PatternMemberID, dtCls);

                    //rdfs:Datatype subclassOf rdfs:Literal
                    rdfsLiteral.DirectSubClasses.Add(dtCls.PatternMemberID,   dtCls);
                    dtCls.DirectSuperClasses.Add(rdfsLiteral.PatternMemberID, rdfsLiteral);
                }
            });            

        }