ApplyToStore() public method

Applies the query to the given store
public ApplyToStore ( RDFStore store ) : RDFSelectQueryResult
store RDFStore
return RDFSelectQueryResult
Beispiel #1
0
        protected void GetRDF()
        {
            try
            {

                // First we set some core RDF resources
                // agent refers to artist(s)
                RDFResource type = RDFVocabulary.RDF.TYPE;
                RDFResource name = RDFVocabulary.FOAF.NAME;
                RDFResource agent = RDFVocabulary.FOAF.AGENT;

                // TGN is a Getty vocabulary for locations
                // TGN added to RDFSharp vocabularies manually.  TGN ID is stored in TMSThes (or equivalent in TMS 2014+)
                RDFResource tgn = new RDFResource(RDFVocabulary.TGN.BASE_URI);

                // The predicates below are often part of ULAN (which we don't have)
                // unsure if using bio events this way is acceptable...

                RDFResource livedIn = new RDFResource("http://purl.org/vocab/bio/0.1/event/livedIn");
                RDFResource activeIn = new RDFResource("http://purl.org/vocab/bio/0.1/event/activeIn");
                RDFResource educatedIn = new RDFResource("http://purl.org/vocab/bio/0.1/event/educatedIn");
                RDFResource bornIn = new RDFResource("http://purl.org/vocab/bio/0.1/event/bornIn");
                RDFResource diedIn = new RDFResource("http://purl.org/vocab/bio/0.1/event/diedIn");

                RDFResource anUri = new RDFResource("http://example.org/uris#anUri");

                // Create variables
                RDFVariable x = new RDFVariable("x", true);
                RDFVariable y = new RDFVariable("y", true);
                RDFVariable n = new RDFVariable("n", true);
                RDFVariable h = new RDFVariable("h", true);
                RDFVariable p = new RDFVariable("p", true);

                string m_select = DropDownList1.Text;
                string m_filter = TextBox1.Text;

                RDFResource m_sparql_resource = livedIn;

                if (m_select == "livedIn")
                {
                    m_sparql_resource = livedIn;
                }
                if (m_select == "activeIn")
                {
                    m_sparql_resource = activeIn;
                }
                if (m_select == "educatedIn")
                {
                    m_sparql_resource = educatedIn;
                }
                if (m_select == "bornIn")
                {
                    m_sparql_resource = bornIn;
                }
                if (m_select == "diedIn")
                {
                    m_sparql_resource = diedIn;
                }

                // Create Sparql Select query
                RDFSelectQuery q1 = new RDFSelectQuery()
                .AddPatternGroup(new RDFPatternGroup("TmsPatternGroup")
                .AddPattern(new RDFPattern(y, m_sparql_resource, x))
                .AddPattern(new RDFPattern(x, type, tgn))
                .AddPattern(new RDFPattern(y, name, h).Optional())
                .AddPattern(new RDFPattern(x, name, n).Optional())
                .AddFilter(new RDFRegexFilter(n, new Regex(m_filter, RegexOptions.IgnoreCase))))
                .AddModifier(new RDFDistinctModifier());

                // Apply query
                string m_conn = ConfigurationManager.ConnectionStrings["RDFConnectionString"].ConnectionString;
                RDFSQLServerStore rdf_mssql = new RDFSQLServerStore(m_conn);
                RDFSelectQueryResult res = q1.ApplyToStore(rdf_mssql);

                Label1.Text = "RESULTS: " + res.SelectResultsCount + "\n\n" + q1;
                GridView1.DataSource = res.SelectResults;
                GridView1.DataBind();

            }
            catch (Exception ex)
            {
                string m_debug = ex.Message;
            }
        }
Beispiel #2
0
        /// <summary>
        /// Compacts the reified quadruples by removing their 4 standard statements 
        /// </summary>
        public override void UnreifyQuadruples()
        {
            //Create SPARQL SELECT query for detecting reified quadruples
            var T = new RDFVariable("T");
            var C = new RDFVariable("C");
            var S = new RDFVariable("S");
            var P = new RDFVariable("P");
            var O = new RDFVariable("O");
            var Q = new RDFSelectQuery()
                            .AddPatternGroup(new RDFPatternGroup("UnreifyQuadruples")
                                .AddPattern(new RDFPattern(C, T, RDFVocabulary.RDF.TYPE, RDFVocabulary.RDF.STATEMENT))
                                .AddPattern(new RDFPattern(C, T, RDFVocabulary.RDF.SUBJECT, S))
                                .AddPattern(new RDFPattern(C, T, RDFVocabulary.RDF.PREDICATE, P))
                                .AddPattern(new RDFPattern(C, T, RDFVocabulary.RDF.OBJECT, O))
                                .AddFilter(new RDFIsUriFilter(C))
                                .AddFilter(new RDFIsUriFilter(T))
                                .AddFilter(new RDFIsUriFilter(S))
                                .AddFilter(new RDFIsUriFilter(P))
                            );

            //Apply it to the store
            var R = Q.ApplyToStore(this);

            //Iterate results
            var reifiedQuadruples = R.SelectResults.Rows.GetEnumerator();
            while (reifiedQuadruples.MoveNext()) {

                //Get reification data (T, C, S, P, O)
                var tRepresent = RDFQueryUtilities.ParseRDFPatternMember(((DataRow)reifiedQuadruples.Current)["?T"].ToString());
                var tContext   = RDFQueryUtilities.ParseRDFPatternMember(((DataRow)reifiedQuadruples.Current)["?C"].ToString());
                var tSubject   = RDFQueryUtilities.ParseRDFPatternMember(((DataRow)reifiedQuadruples.Current)["?S"].ToString());
                var tPredicate = RDFQueryUtilities.ParseRDFPatternMember(((DataRow)reifiedQuadruples.Current)["?P"].ToString());
                var tObject    = RDFQueryUtilities.ParseRDFPatternMember(((DataRow)reifiedQuadruples.Current)["?O"].ToString());

                //Cleanup store from detected reifications
                if (tObject is RDFResource) {
                    this.AddQuadruple(new RDFQuadruple(new RDFContext(((RDFResource)tContext).URI), (RDFResource)tSubject, (RDFResource)tPredicate, (RDFResource)tObject));
                    this.RemoveQuadruple(new RDFQuadruple(new RDFContext(((RDFResource)tContext).URI), (RDFResource)tRepresent, RDFVocabulary.RDF.TYPE, RDFVocabulary.RDF.STATEMENT));
                    this.RemoveQuadruple(new RDFQuadruple(new RDFContext(((RDFResource)tContext).URI), (RDFResource)tRepresent, RDFVocabulary.RDF.SUBJECT, (RDFResource)tSubject));
                    this.RemoveQuadruple(new RDFQuadruple(new RDFContext(((RDFResource)tContext).URI), (RDFResource)tRepresent, RDFVocabulary.RDF.PREDICATE, (RDFResource)tPredicate));
                    this.RemoveQuadruple(new RDFQuadruple(new RDFContext(((RDFResource)tContext).URI), (RDFResource)tRepresent, RDFVocabulary.RDF.OBJECT, (RDFResource)tObject));
                }
                else {
                    this.AddQuadruple(new RDFQuadruple(new RDFContext(((RDFResource)tContext).URI), (RDFResource)tSubject, (RDFResource)tPredicate, (RDFLiteral)tObject));
                    this.RemoveQuadruple(new RDFQuadruple(new RDFContext(((RDFResource)tContext).URI), (RDFResource)tRepresent, RDFVocabulary.RDF.TYPE, RDFVocabulary.RDF.STATEMENT));
                    this.RemoveQuadruple(new RDFQuadruple(new RDFContext(((RDFResource)tContext).URI), (RDFResource)tRepresent, RDFVocabulary.RDF.SUBJECT, (RDFResource)tSubject));
                    this.RemoveQuadruple(new RDFQuadruple(new RDFContext(((RDFResource)tContext).URI), (RDFResource)tRepresent, RDFVocabulary.RDF.PREDICATE, (RDFResource)tPredicate));
                    this.RemoveQuadruple(new RDFQuadruple(new RDFContext(((RDFResource)tContext).URI), (RDFResource)tRepresent, RDFVocabulary.RDF.OBJECT, (RDFLiteral)tObject));
                }

            }
        }