---++Thalia Linked Data Views Script to set up your own instance use DB; SPARQL drop quad map virtrdf:ThaliaDemo ; create procedure DB.DBA.SPARQL_THALIA_RUN (in txt varchar) { declare REPORT, stat, msg, sqltext varchar; declare metas, rowset any; result_names (REPORT); sqltext := string_output_string (sparql_to_sql_text (txt)); stat := '00000'; msg := ''; rowset := null; exec (sqltext, stat, msg, vector (), 1000, metas, rowset); } ; create procedure DB.DBA.exec_no_error(in expr varchar) { declare state, message, meta, result any; exec(expr, state, message, vector(), 0, meta, result); } ; DB.DBA.exec_no_error('drop View thalia.Demo.asu_v'); DB.DBA.exec_no_error('create View thalia.Demo.asu_v as select left(Title,3) code,* from thalia.Demo.asu'); DB.DBA.exec_no_error('drop View thalia.Demo.gatech_v'); DB.DBA.exec_no_error('create View thalia.Demo.gatech_v as select *, Room||\' \'||Building Place from thalia.Demo.gatech'); DB.DBA.SPARQL_THALIA_RUN('drop quad map graph iri("http://^{URIQADefaultHost}^/Thalia") . ') ; GRANT SELECT ON thalia.Demo.asu TO "SPARQL" ; GRANT SELECT ON thalia.Demo.asu_v TO "SPARQL" ; GRANT SELECT ON thalia.Demo.brown TO "SPARQL" ; GRANT SELECT ON thalia.Demo.cmu TO "SPARQL" ; GRANT SELECT ON thalia.Demo.gatech TO "SPARQL" ; GRANT SELECT ON thalia.Demo.gatech_v TO "SPARQL" ; GRANT SELECT ON thalia.Demo.toronto TO "SPARQL" ; GRANT SELECT ON thalia.Demo.ucsd TO "SPARQL" ; GRANT SELECT ON thalia.Demo.umd TO "SPARQL" ; DB.DBA.SPARQL_THALIA_RUN('drop quad map graph iri("http://^{URIQADefaultHost}^/thalia") . '); DB.DBA.SPARQL_THALIA_RUN('drop quad map virtrdf:ThaliaDemo . '); DB.DBA.SPARQL_THALIA_RUN(' prefix oplsioc: prefix sioc: prefix xsd: prefix rdf: prefix rdfs: prefix owl: prefix dc: prefix time: prefix event: prefix geo: prefix foaf: prefix skos: prefix th: create iri class th:Asu "http://^{URIQADefaultHost}^/thalia/asu/course/%U#this" (in code varchar not null) . create iri class th:Brown "http://^{URIQADefaultHost}^/thalia/brown/course/%U#this" (in Code varchar not null) . create iri class th:BrownInstructor "http://^{URIQADefaultHost}^/thalia/brown/instructor/%U#this" (in Code varchar not null) . create iri class th:BrownLecture "http://^{URIQADefaultHost}^/thalia/brown/lecture/%U#this" (in Code varchar not null) . create iri class th:BrownPlace "http://^{URIQADefaultHost}^/thalia/brown/place/%U#this" (in Code varchar not null) . create iri class th:Cmu "http://^{URIQADefaultHost}^/thalia/cmu/course/%U/%U#this" (in Code varchar not null, in Sec varchar) . create iri class th:CmuInstructor "http://^{URIQADefaultHost}^/thalia/cmu/instructor/%U/%U#this" (in Code varchar not null, in Sec varchar) . create iri class th:CmuLecture "http://^{URIQADefaultHost}^/thalia/cmu/lecture/%U/%U#this" (in Code varchar not null, in Sec varchar) . create iri class th:CmuPlace "http://^{URIQADefaultHost}^/thalia/cmu/place/%U/%U#this" (in Code varchar not null, in Sec varchar) . create iri class th:CmuEventTime "http://^{URIQADefaultHost}^/thalia/cmu/eventtime/%U/%U#this" (in Code varchar not null, in Sec varchar) . create iri class th:CmuDatetime "http://^{URIQADefaultHost}^/thalia/cmu/datetime/%U/%U#this" (in Code varchar not null, in Sec varchar) . create iri class th:Gatech "http://^{URIQADefaultHost}^/thalia/gatech/course/%U/%d/%U#this" (in Department varchar, in Code integer, in Section varchar) . create iri class th:GatechInstructor "http://^{URIQADefaultHost}^/thalia/gatech/instructor/%U/%d/%U#this" (in Department varchar, in Code integer, in Section varchar) . create iri class th:GatechLecture "http://^{URIQADefaultHost}^/thalia/gatech/lecture/%U/%d/%U#this" (in Department varchar, in Code integer, in Section varchar) . create iri class th:GatechEventTime "http://^{URIQADefaultHost}^/thalia/gatech/eventtime/%U/%d/%U#this" (in Department varchar, in Code integer, in Section varchar) . create iri class th:GatechDatetime "http://^{URIQADefaultHost}^/thalia/gatech/datetime/%U/%d/%U#this" (in Department varchar, in Code integer, in Section varchar) . create iri class th:GatechPlace "http://^{URIQADefaultHost}^/thalia/gatech/place/%U/%d/%U#this" (in Department varchar, in Code integer, in Section varchar) . create iri class th:Toronto "http://^{URIQADefaultHost}^/thalia/toronto/course/%U#this" (in No_ varchar) . create iri class th:TorontoInstructor "http://^{URIQADefaultHost}^/thalia/toronto/instructor/%U#this" (in No_ varchar) . create iri class th:TorontoLecture "http://^{URIQADefaultHost}^/thalia/toronto/lecture/%U#this" (in No_ varchar) . create iri class th:TorontoPlace "http://^{URIQADefaultHost}^/thalia/toronto/place/%U#this" (in No_ varchar) . create iri class th:Ucsd "http://^{URIQADefaultHost}^/thalia/ucsd/course/%U#this" (in Number varchar) . create iri class th:UcsdInstructor1 "http://^{URIQADefaultHost}^/thalia/ucsd/instructor1/%U#this" (in Number varchar) . create iri class th:UcsdInstructor2 "http://^{URIQADefaultHost}^/thalia/ucsd/instructor2/%U#this" (in Number varchar) . create iri class th:UcsdInstructor3 "http://^{URIQADefaultHost}^/thalia/ucsd/instructor3/%U#this" (in Number varchar) . create iri class th:Umd "http://^{URIQADefaultHost}^/thalia/umd/course/%U#this" (in Code varchar) . create iri class th:UmdLecture "http://^{URIQADefaultHost}^/thalia/umd/lecture/%U#this" (in Code varchar) . create iri class th:UmdEventTime "http://^{URIQADefaultHost}^/thalia/umd/eventtime/%U#this" (in Code varchar) . create iri class th:UmdDatetime "http://^{URIQADefaultHost}^/thalia/umd/datetime/%U#this" (in Code varchar) . ') ; DB.DBA.SPARQL_THALIA_RUN('prefix oplsioc: prefix sioc: prefix xsd: prefix rdf: prefix rdfs: prefix owl: prefix dc: prefix time: prefix event: prefix geo: prefix foaf: prefix skos: prefix th: alter quad storage virtrdf:DefaultQuadStorage from thalia.demo.asu_v as asus from thalia.demo.brown as browns from thalia.demo.cmu as cmus from thalia.demo.gatech_v as gatechs from thalia.demo.toronto as torontos from thalia.demo.ucsd as ucsds from thalia.demo.umd as umds { create virtrdf:ThaliaDemo as graph iri ("http://^{URIQADefaultHost}^/thalia") option (exclusive) { th:Asu (asus.code) a th:Course as virtrdf:Asu-Course ; dc:title asus.Title as virtrdf:Asu-Title ; dc:description asus.Description as virtrdf:Asu-Description ; rdfs:seeAlso asus.MoreInfoURL as virtrdf:Asu-MoreInfoURL ; th:forUniversity "http://purl.org/thalia/university/asu" as virtrdf:Asu-University ; skos:subject "http://purl.org/subject/thalia/ComputerScience" as virtrdf:Asu-Subject . th:Brown (browns.Code) a th:Course as virtrdf:Brown-Course ; dc:title browns.Title as virtrdf:Brown-Title ; th:hasInstructor th:BrownInstructor (browns.Code) as virtrdf:Brown-hasInstructor ; th:hasLecture th:BrownLecture(browns.Code) as virtrdf:Brown-hasLecture ; th:forUniversity "http://purl.org/thalia/university/brown" as virtrdf:Brown-University ; skos:subject "http://purl.org/subject/thalia/ComputerScience" as virtrdf:Brown-Subject . th:BrownInstructor (browns.Code) a th:Instructor as virtrdf:Brown-Instructor ; dc:homepage browns.Instructor as virtrdf:Brown-Instructor-Homepage . th:BrownLecture (browns.Code) a event:Event as virtrdf:Brown-Lecture ; event:place th:BrownPlace(browns.Code) as virtrdf:Brown-hasPlace . th:BrownPlace (browns.Code) a geo:Point as virtrdf:Brown-Place; dc:title browns.Room as virtrdf:Brown-Room . th:Cmu (cmus.Code, cmus.Sec) a th:Course as virtrdf:Cmu-Course ; dc:title cmus.CourseTitle as virtrdf:Cmu-CourseTitle ; th:hasInstructor th:CmuInstructor (cmus.Code, cmus.Sec) as virtrdf:Cmu-hasInstructor ; th:hasLecture th:CmuLecture(cmus.Code, cmus.Sec) as virtrdf:Cmu-hasLecture ; th:hasUnits cmus.Units as virtrdf:Cmu-hasUnits ; th:forUniversity "http://purl.org/thalia/university/cmu" as virtrdf:Cmu-University ; skos:subject "http://purl.org/subject/thalia/ComputerScience" as virtrdf:Cmu-Subject . th:CmuInstructor (cmus.Code, cmus.Sec) a th:Instructor as virtrdf:Cmu-Instructor ; foaf:name cmus.Lecturer as virtrdf:Cmu-Lecturer . th:CmuLecture (cmus.Code, cmus.Sec) a event:Event as virtrdf:Cmu-Lecture ; event:time th:CmuEventTime(cmus.Code, cmus.Sec) as virtrdf:Cmu-hasEventTime ; event:place th:CmuPlace(cmus.Code, cmus.Sec) as virtrdf:Cmu-hasPlace . th:CmuPlace (cmus.Code, cmus.Sec) a geo:Point as virtrdf:Cmu-Place; dc:title cmus.Room as virtrdf:Cmu-Room . th:CmuEventTime (cmus.Code, cmus.Sec) a time:Interval as virtrdf:Cmu-EventTime; time:inDateTime th:CmuDatetime(cmus.Code, cmus.Sec) as virtrdf:Cmu-inDateTime . th:CmuDatetime (cmus.Code, cmus.Sec) a time:DateTimeDescription as virtrdf:Cmu-Datetime; time:dayOfWeek cmus.Day_ as virtrdf:Cmu-Day ; time:hour cmus.Time_ as virtrdf:Cmu-Time . th:Gatech (gatechs.Department, gatechs.Code, gatechs.Section) a th:Course as virtrdf:Gatech-Course ; dc:title gatechs.Title as virtrdf:Gatech-Title ; th:hasInstructor th:GatechInstructor(gatechs.Department, gatechs.Code, gatechs.Section) as virtrdf:Gatech-hasInstructor ; dc:description gatechs.Description as virtrdf:Gatech-Description ; th:hasLecture th:GatechLecture(gatechs.Department, gatechs.Code, gatechs.Section) as virtrdf:Gatech-hasLecture ; th:forUniversity "http://purl.org/thalia/university/gatech" as virtrdf:Gatech-University ; skos:subject "http://purl.org/subject/thalia/ComputerScience" as virtrdf:Gatech-Subject . th:GatechInstructor (gatechs.Department, gatechs.Code, gatechs.Section) a th:Instructor as virtrdf:Gatech-Instructor ; foaf:name gatechs.Instructor as virtrdf:Gatech-InstructorName . th:GatechLecture (gatechs.Department, gatechs.Code, gatechs.Section) a event:Event as virtrdf:Gatech-Lecture ; event:time th:GatechEventTime(gatechs.Department, gatechs.Code, gatechs.Section) as virtrdf:Gatech-hasEventTime ; event:place th:GatechPlace(gatechs.Department, gatechs.Code, gatechs.Section) as virtrdf:Gatech-hasPlace . th:GatechEventTime (gatechs.Department, gatechs.Code, gatechs.Section) a time:Interval as virtrdf:Gatech-EventTime ; time:inDateTime th:GatechDatetime(gatechs.Department, gatechs.Code, gatechs.Section) as virtrdf:Gatech-inDateTime . th:GatechDatetime (gatechs.Department, gatechs.Code, gatechs.Section) a time:DateTimeDescription as virtrdf:Gatech-Datetime ; time:dayOfWeek gatechs.Days as virtrdf:Gatech-Days ; time:hour gatechs.Time_ as virtrdf:Gatech-Time_ . th:GatechPlace (gatechs.Department, gatechs.Code, gatechs.Section) a geo:Point as virtrdf:Gatech-Place ; dc:title gatechs.Place as virtrdf:Gatech-RoomBuilding . th:Toronto (torontos.No_) a th:Course as virtrdf:Toronto-Course ; dc:title torontos.title as virtrdf:Toronto-Title ; dc:description torontos.text_ as virtrdf:Toronto-Description ; th:hasInstructor th:TorontoInstructor(torontos.No_) as virtrdf:Toronto-hasInstructor ; th:hasLecture th:TorontoLecture(torontos.No_) as virtrdf:Toronto-hasLecture ; rdfs:seeAlso torontos.coursewebsite as virtrdf:Toronto-CourseWebSite ; th:hasPrerequisite torontos.prereq as virtrdf:Toronto-prereq ; th:text torontos.text_ as virtrdf:Toronto-text; th:forUniversity "http://purl.org/thalia/university/toronto" as virtrdf:Toronto-University ; skos:subject "http://purl.org/subject/thalia/ComputerScience" as virtrdf:Toronto-Subject . th:TorontoInstructor (torontos.No_) a th:Instructor as virtrdf:Toronto-Instructor ; foaf:name torontos.instructorName as virtrdf:Toronto-InstructorName ; foaf:mbox torontos.instructorEmail as virtrdf:Toronto-InstructorEmail . th:TorontoLecture (torontos.No_) a event:Event as virtrdf:Toronto-Lecture ; event:place th:TorontoPlace(torontos.No_) as virtrdf:Toronto-hasPlace . th:TorontoPlace (torontos.No_) a geo:Point as virtrdf:Toronto-Place ; dc:title torontos.location as virtrdf:Toronto-Location . th:Ucsd (ucsds.Number) a th:Course as virtrdf:Ucsd-Course ; dc:title ucsds.Title as virtrdf:Ucsd-Title ; th:hasInstructor1 th:UcsdInstructor1 (ucsds.Number) as virtrdf:Ucsd-hasInstructor1 ; th:hasInstructor2 th:UcsdInstructor2 (ucsds.Number) as virtrdf:Ucsd-hasInstructor2 ; th:hasInstructor3 th:UcsdInstructor3 (ucsds.Number) as virtrdf:Ucsd-hasInstructor3 ; th:forUniversity "http://purl.org/thalia/university/ucsd" as virtrdf:Ucsd-University ; skos:subject "http://purl.org/subject/thalia/ComputerScience" as virtrdf:Ucsd-Subject . th:UcsdInstructor1 (ucsds.Number) a th:Instructor as virtrdf:Ucsd-Instructor1 ; foaf:name ucsds.Fall2003 as virtrdf:Ucsd-Instructor-Fall2003 . th:UcsdInstructor2 (ucsds.Number) a th:Instructor as virtrdf:Ucsd-Instructor2 ; foaf:name ucsds.Winter2004 as virtrdf:Ucsd-Instructor-Winter2004 . th:UcsdInstructor3 (ucsds.Number) a th:Instructor as virtrdf:Ucsd-Instructor3 ; foaf:name ucsds.Spring2004 as virtrdf:Ucsd-Instructor-Spring2004 . th:Umd (umds.Code) a th:Course as virtrdf:Umd-Course ; dc:title umds.CourseName as virtrdf:Umd-Title ; th:hasSection th:SectionTitle as virtrdf:Umd-hasSection ; th:hasLecture th:UmdLecture(umds.Code) as virtrdf:Umd-hasLecture ; th:forUniversity "http://purl.org/thalia/university/umd" as virtrdf:Umd-University ; skos:subject "http://purl.org/subject/thalia/ComputerScience" as virtrdf:Umd-Subject . th:UmdLecture (umds.Code) a event:Event as virtrdf:Umd-Lecture ; event:time th:UmdEventTime(umds.Code) as virtrdf:Umd-hasEventTime . th:UmdEventTime (umds.Code) a time:Interval as virtrdf:Umd-EventTime ; time:inDateTime th:UmdDatetime(umds.Code) as virtrdf:Umd-inDateTime . th:UmdDatetime (umds.Code) a time:DateTimeDescription as virtrdf:Umd-Datetime ; time:hour umds.SectionTime as virtrdf:Umd-SectionTime . } } ') ; delete from db.dba.url_rewrite_rule_list where urrl_list like 'tut_th_%'; delete from db.dba.url_rewrite_rule where urr_rule like 'tut_th_%'; DB.DBA.URLREWRITE_CREATE_REGEX_RULE ( 'tut_th_rule2', 1, '([^#]*)', vector('path'), 1, '/sparql?query=CONSTRUCT+{+%%3Chttp%%3A//^{URIQADefaultHost}^%U%%23this%%3E+%%3Fp+%%3Fo+}+FROM+%%3Chttp%%3A//^{URIQADefaultHost}^/thalia%%3E+WHERE+{+%%3Chttp%%3A//^{URIQADefaultHost}^%U%%23this%%3E+%%3Fp+%%3Fo+}&format=%U', vector('path', 'path', '*accept*'), null, '(text/rdf.n3)|(application/rdf.xml)', 0, null ); DB.DBA.URLREWRITE_CREATE_REGEX_RULE ( 'tut_th_rule1', 1, '([^#]*)', vector('path'), 1, '/about/html/http/^{URIQADefaultHost}^%s%%23this', vector('path'), null, '(text/html)|(\\*/\\*)', 0, 303 ); DB.DBA.URLREWRITE_CREATE_REGEX_RULE ( 'tut_th_rule3', 1, '(/[^#]*)/\x24', vector('path'), 1, '%U', vector('path'), null, null, 0, null ); create procedure DB.DBA.REMOVE_THALIA_RDF_DET() { declare colid int; colid := DAV_SEARCH_ID('/DAV/home/demo/thalia', 'C'); if (colid < 0) return; update WS.WS.SYS_DAV_COL set COL_DET=null where COL_ID = colid; } ; DB.DBA.REMOVE_THALIA_RDF_DET(); drop procedure DB.DBA.REMOVE_THALIA_RDF_DET; create procedure DB.DBA.THALIA_MAKE_RDF_DET() { declare uriqa_str varchar; uriqa_str := cfg_item_value(virtuoso_ini_path(), 'URIQA','DefaultHost'); uriqa_str := 'http://' || uriqa_str || '/thalia'; DB.DBA."RDFData_MAKE_DET_COL" ('/DAV/home/demo/thalia/RDFData/', uriqa_str, NULL); VHOST_REMOVE (lpath=>'/thalia/data/rdf'); DB.DBA.VHOST_DEFINE (lpath=>'/thalia/data/rdf', ppath=>'/DAV/home/demo/thalia/RDFData/All/', is_dav=>1, vsp_user=>'dba'); } ; DB.DBA.THALIA_MAKE_RDF_DET(); drop procedure DB.DBA.THALIA_MAKE_RDF_DET; -- procedure to convert path to DET resource name create procedure DB.DBA.THALIA_DET_REF (in par varchar, in fmt varchar, in val varchar) { declare res, iri any; declare uriqa_str varchar; uriqa_str := cfg_item_value(virtuoso_ini_path(), 'URIQA','DefaultHost'); uriqa_str := 'http://' || uriqa_str || '/thalia'; iri := uriqa_str || replace(val, '/', '_'); res := sprintf ('iid (%d).rdf', iri_id_num (iri_to_id (iri))); return sprintf (fmt, res); } ; DB.DBA.URLREWRITE_CREATE_REGEX_RULE ('tut_th_rdf', 1, '/thalia/(.*)', vector('path'), 1, '/thalia/data/rdf/%U', vector('path'), 'DB.DBA.THALIA_DET_REF', 'application/rdf.xml', 2, 303); DB.DBA.URLREWRITE_CREATE_RULELIST ( 'tut_th_rule_list1', 1, vector ( 'tut_th_rule1', 'tut_th_rule2', 'tut_th_rule3', 'tut_th_rdf' )); DB.DBA.VHOST_REMOVE (lpath=>'/thalia'); DB.DBA.VHOST_DEFINE (lpath=>'/thalia', ppath=>'/DAV/home/demo/thalia/', vsp_user=>'dba', is_dav=>1, is_brws=>0, opts=>vector ('url_rewrite', 'tut_th_rule_list1')); DB.DBA.XML_SET_NS_DECL ('th', 'http://purl.org/ontology/thalia/1.0/', 2); * Demo : Thalia test queries #service:/sparql #should-sponge:soft PREFIX xsd: PREFIX rdf: PREFIX rdfs: PREFIX owl: PREFIX dc: PREFIX time: PREFIX event: PREFIX geo: PREFIX foaf: PREFIX skos: PREFIX th: SELECT distinct ?room FROM WHERE { ?course a th:Course; dc:title ?title; th:hasLecture ?lecture. ?lecture event:place [dc:title ?room]. FILTER regex(?title, "Software Engineering") } #service:/sparql #should-sponge:soft PREFIX xsd: PREFIX rdf: PREFIX rdfs: PREFIX owl: PREFIX dc: PREFIX time: PREFIX event: PREFIX geo: PREFIX foaf: PREFIX skos: PREFIX th: SELECT ?day, ?hour ?course FROM WHERE { ?course a th:Course; th:hasLecture [event:time ?time]; dc:title ?title. ?time time:inDateTime [time:dayOfWeek ?day]; time:inDateTime [time:hour ?hour]. FILTER regex(?title, "Computer Networks") } #service:/sparql #should-sponge:soft PREFIX xsd: PREFIX rdf: PREFIX rdfs: PREFIX owl: PREFIX dc: PREFIX time: PREFIX event: PREFIX geo: PREFIX foaf: PREFIX skos: PREFIX th: SELECT distinct ?course FROM WHERE { ?course a th:Course; dc:title ?Title; th:hasLecture ?lecture. ?lecture event:time [time:inDateTime ?dateTime]. ?dateTime time:hour ?hour. FILTER regex(?Title, "Database System") FILTER regex(?hour, "1:30 - 2:50") } #service:/sparql #should-sponge:soft PREFIX xsd: PREFIX rdf: PREFIX rdfs: PREFIX owl: PREFIX dc: PREFIX time: PREFIX event: PREFIX geo: PREFIX foaf: PREFIX skos: PREFIX th: SELECT distinct ?course ?instructor ?name FROM WHERE { ?course a th:Course; th:hasInstructor ?instructor. ?instructor foaf:name ?name. } #service:/sparql #should-sponge:soft PREFIX xsd: PREFIX rdf: PREFIX rdfs: PREFIX owl: PREFIX dc: PREFIX time: PREFIX event: PREFIX geo: PREFIX foaf: PREFIX skos: PREFIX th: SELECT distinct ?instructor FROM WHERE { ?course a th:Course; th:hasInstructor ?instructor; dc:title ?title. FILTER regex(?title, "Database") } #service:/sparql #should-sponge:soft PREFIX xsd: PREFIX rdf: PREFIX rdfs: PREFIX owl: PREFIX dc: PREFIX time: PREFIX event: PREFIX geo: PREFIX foaf: PREFIX skos: PREFIX th: SELECT distinct ?instructor FROM WHERE { ?course a th:Course; dc:title ?title; th:hasInstructor ?instructor. FILTER regex(?title, "Software") } #service:/sparql #should-sponge:soft PREFIX xsd: PREFIX rdf: PREFIX rdfs: PREFIX owl: PREFIX dc: PREFIX time: PREFIX event: PREFIX geo: PREFIX foaf: PREFIX skos: PREFIX th: SELECT DISTINCT ?course FROM WHERE { ?course a th:Course; dc:title ?title; th:forUniversity 'http://purl.org/thalia/university/umd'. FILTER regex(?title, "Data Structures") } #service:/sparql #should-sponge:soft PREFIX xsd: PREFIX rdf: PREFIX rdfs: PREFIX owl: PREFIX dc: PREFIX time: PREFIX event: PREFIX geo: PREFIX foaf: PREFIX skos: PREFIX th: SELECT distinct ?course FROM WHERE { ?course a th:Course; dc:title ?Title; th:hasUnits ?credits. FILTER (xsd:integer(?credits) > 10) FILTER regex(?Title, "Database") } #service:/sparql #should-sponge:soft PREFIX xsd: PREFIX rdf: PREFIX rdfs: PREFIX owl: PREFIX dc: PREFIX time: PREFIX event: PREFIX geo: PREFIX foaf: PREFIX skos: PREFIX th: SELECT distinct ?course FORM WHERE { ?course a th:Course; dc:title ?title; th:forUniversity 'http://purl.org/thalia/university/umd'. FILTER regex(?title, "Database") } #service:/sparql #should-sponge:soft PREFIX xsd: PREFIX rdf: PREFIX rdfs: PREFIX owl: PREFIX dc: PREFIX time: PREFIX event: PREFIX geo: PREFIX foaf: PREFIX skos: PREFIX th: SELECT distinct ?course FROM WHERE { ?course a th:Course; dc:title ?Title; th:hasUnits ?credits. FILTER (xsd:integer(?credits) > 10) FILTER regex(?Title, "Database") } #service:/sparql #should-sponge:soft PREFIX xsd: PREFIX rdf: PREFIX rdfs: PREFIX owl: PREFIX dc: PREFIX time: PREFIX event: PREFIX geo: PREFIX foaf: PREFIX skos: PREFIX th: SELECT distinct ?text_ FROM WHERE { ?course a th:Course; dc:title ?title; th:text ?text_. FILTER regex(?title, "Verification") } #service:/sparql #should-sponge:soft PREFIX xsd: PREFIX rdf: PREFIX rdfs: PREFIX owl: PREFIX dc: PREFIX time: PREFIX event: PREFIX geo: PREFIX foaf: PREFIX skos: PREFIX : SELECT distinct ?course FROM WHERE { ?course a th:Course; dc:description ?description; th:forUniversity 'http://purl.org/thalia/university/gatech'. FILTER regex(?description, "JR") }