Bases de Données / Databases

Site Web de l'équipe BD du LIP6 / LIP6 DB Web Site

User Tools

Site Tools


en:site:recherche:logiciels:sparqlwithspark:watdivf5

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
en:site:recherche:logiciels:sparqlwithspark:watdivf5 [14/09/2016 14:53] – created huberten:site:recherche:logiciels:sparqlwithspark:watdivf5 [16/09/2016 23:07] (current) – [WatDiv Query F5 plans] hubert
Line 1: Line 1:
-====== Query F5 ====== +{{indexmenu_n>3}}
-SPARQL Hybrid DF plan+
  
-<code> +====== WatDiv Query F5 plans====== 
-// 1st triple pattern+ 
 +=== SPARQL Hybrid DF plan === 
 + 
 +<code scala
 +// First triple pattern
 val retailer = getIdSO("wsdbm", "Retailer3") val retailer = getIdSO("wsdbm", "Retailer3")
-val t1 VP2EXP(getIdP("gr", "offers")).where(s"s=$retailer").select("o").withColumnRenamed("o","s"+val idP1 = getIdP("gr", "offers"
-val e1 = sc.parallelize(1 to NB_FRAGMENTS, NB_FRAGMENTS).map(x => -1).toDF("s"+val s1 = List(
-val t1OK = t1.unionAll(e1+
-val orderedList1 = List(+
   ("gr","validThrough"),   ("gr","validThrough"),
   ("gr", "includes"),   ("gr", "includes"),
   ("gr", "price"))   ("gr", "price"))
-val orderedList2 = List(+val s2 = List(
   ("og", "title"),    ("og", "title"), 
   ("rdf", "type"))   ("rdf", "type"))
  
-val l1 = orderedList1.map{case(ns, p) => {+ 
 +val subset = df.where(s"(p=$idP1 and s=$retailer) or p in (3,12,26,38,57)").persist 
 +subset.count  
 +val DATA = subset 
 + 
 +val tp1 = DATA.where(s"s=$retailer").select("o").withColumnRenamed("o","s"
 +val e1 = sc.parallelize(1 to NB_FRAGMENTS, NB_FRAGMENTS).map(x => -1).toDF("s"
 +val tp1a = t1.unionAll(e1) 
 + 
 +val l1 = s1.map{case(ns, p) => { 
 +  val idP = getIdP(ns, p) 
 +  DATA.where(s"p=$idP").select("s","o").withColumnRenamed("o", s"o$idP")}} 
 + 
 +val l2 = s2.map{case(ns, p) => { 
 +  val idP = getIdP(ns, p) 
 +  DATA.where(s"p=$idP").select("s","o").withColumnRenamed("o", s"o$idP")}} 
 + 
 +val v1 = getIdP("gr", "includes"
 +val snf1 = tp1a.join(l1(0),"s").join(l1(1),"s").join(l1(2),"s").withColumnRenamed("s", "v0").withColumnRenamed(s"o$v1","s"
 + 
 +val query = snf1.join(l2(0),"s").join(l2(1),"s"
 + 
 +</code> 
 + 
 +=== S2RDF plan === 
 + 
 +<code scala> 
 +val VP2EXP=VP2Random 
 + 
 +val tp1 = VP2EXP(getIdP("gr", "offers")).where(s"s=$retailer").select("o").withColumnRenamed("o","s"
 + 
 +val l1 = s1.map{case(ns, p) => {
   val idP = getIdP(ns, p)   val idP = getIdP(ns, p)
   VP2EXP(idP).withColumnRenamed("o", s"o$idP")}}   VP2EXP(idP).withColumnRenamed("o", s"o$idP")}}
  
-val l2 = orderedList2.map{case(ns, p) => {+val v1 = getIdP("gr", "includes"
 +val snf1 = tp1.join(l1(0),"s").join(l1(1),"s").join(l1(2),"s").withColumnRenamed("s", "v0").withColumnRenamed(s"o$v1","s"
 + 
 +val l2 = s2.map{case(ns, p) => { 
 +  val idP = getIdP(ns, p) 
 +  VP2EXP(idP).withColumnRenamed("o", s"o$idP")}} 
 + 
 +val query = snf1.join(l2(0),"s").join(l2(1),"s"
 + 
 +</code> 
 + 
 +=== S2RDF + Hybrid plan === 
 + 
 + 
 +<code scala> 
 +val VP2EXP=VP2Subject 
 + 
 +val s1 = List( 
 +  ("gr","validThrough"), 
 +  ("gr", "includes"), 
 +  ("gr", "price")) 
 +val s2 = List( 
 +  ("og", "title"),  
 +  ("rdf", "type")) 
 + 
 +// First triple pattern 
 +val retailer = getIdSO("wsdbm", "Retailer3"
 +val tp1 = VP2EXP(getIdP("gr", "offers")).where(s"s=$retailer").select("o").withColumnRenamed("o","s"
 +val e1 = sc.parallelize(1 to NB_FRAGMENTS, NB_FRAGMENTS).map(x => -1).toDF("s"
 +val tp1a = tp1.unionAll(e1) 
 + 
 +val l1 = s1.map{case(ns, p) => {
   val idP = getIdP(ns, p)   val idP = getIdP(ns, p)
   VP2EXP(idP).withColumnRenamed("o", s"o$idP")}}   VP2EXP(idP).withColumnRenamed("o", s"o$idP")}}
  
 val v1 = getIdP("gr", "includes") val v1 = getIdP("gr", "includes")
-val snf1 = t1OK.join(l1(0),"s").join(l1(1),"s").join(l1(2),"s").withColumnRenamed("s", "v0").withColumnRenamed(s"o$v1","s")+val snf1 = tp1a.join(l1(0),"s").join(l1(1),"s").join(l1(2),"s").withColumnRenamed("s", "v0").withColumnRenamed(s"o$v1","s") 
 + 
 +val l2 = s2.map{case(ns, p) => { 
 +  val idP = getIdP(ns, p) 
 +  VP2EXP(idP).withColumnRenamed("o", s"o$idP")}}
  
 val query = snf1.join(l2(0),"s").join(l2(1),"s") val query = snf1.join(l2(0),"s").join(l2(1),"s")
  
 </code> </code>
 +
 +
 +
 +Go to [[en:site:recherche:logiciels:sparqlwithspark]]
 +
en/site/recherche/logiciels/sparqlwithspark/watdivf5.1473857637.txt.gz · Last modified: by hubert