Published
Edited
Apr 7, 2021
1 fork
Importers
Insert cell
md`# D3Search`
Insert cell
Insert cell
sparqlquery=`PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX ecrm: <http://erlangen-crm.org/current/>
PREFIX hdn: <http://hdn.dantenetwork.it/resource/work/commedia/cantica/>
PREFIX lemon: <http://lemon-model.net/lemon#>
PREFIX orl: <http://dantenetwork.it/resource/ontology/ORL/>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>

SELECT ?pos ?sc ?ver ?canto ?cantica
WHERE {
?occ ecrm:P148_is_component_of ?ver .
?occ hdn:isInPosition ?pos .
?canto ecrm:P148_has_component ?ver .
?ver ecrm:P190_has_symbolic_content ?sc .
?cantica ecrm:P148_has_component ?canto .
?occ hdn:occurrenceOf ?form .
?form a orl:FormaVerboVolgare .
?form orl:TipoTransitivitàVerboVolgare orl:VerboVolgareTransitivo .
?form orl:TipoDiatesiVerboVolgare orl:VerboVolgareAttivo .
?form orl:TipoConiugazioneVerboVolgare orl:VerboVolgarePrimaConiugazione .
?form orl:TipoTempoVerboVolgare orl:FuturoSempliceIndicativoVerboVolgare .
?form orl:TipoPersonaVerboVolgare orl:PrimaPersonaSingolareVerboVolgare .
?form lemon:writtenRep ?Rappresentazione .
FILTER regex(?Rappresentazione,"^farò$","i") .
}`
Insert cell
Insert cell
dataconpos=fetch(`https://hdnlab1.isti.cnr.it/fuseki/prima_cantica_init/sparql?query=${encodeURIComponent(gimmespqfromjson())}`, {headers: myauthHeaders}).then(response => {
if (!response.ok) throw new Error(response.status);
return response.json();
})
.then(e =>(e.results.bindings))
.then(f => f.map(x => Object.assign({},{pos:x.pos.value,verso:x.sc.value, iri:x.ver.value})))
Insert cell
categorie=['Verbo volgare', 'Sostantivo volgare', 'Aggettivo volgare', 'Pronome volgare', 'Articolo volgare', 'Avverbio volgare', 'Preposizione volgare', 'Congiunzione volgare', 'Interiezione volgare', 'Onomastica volgare', 'Citazione volgare']
Insert cell
tiporicerca=['Sottostringa', 'Prefisso', 'Suffisso', 'Espressione regolare', 'Tutte le occorrenze']
Insert cell
oggettoricerca=['Forma', 'Lemma']
Insert cell
import {form} from "@mbostock/form-input"
Insert cell
function writesearchValue(form) {
if (queryform.message=='')
return `Cerco qualsiasi ${queryform.oggetto}`;
else return `Cerco la ${queryform.oggetto} "${queryform.message}"`
}
Insert cell
Insert cell
sp_js=require('https://bundle.run/sparqljs@3.4.1')
Insert cell
Insert cell
d3 = require("d3@5")
Insert cell
function gimmespqfromjson(){
const sparqlgen = sp_js.Generator;
const generator = new sparqlgen({orl: "http://www.w3.org/2000/01/rdf-schema#" })
const parsedquery=gimmespq(form)
if (queryform.categoria!='all')
parsedquery.where[0].triples.push(JSON.parse(data21)[queryform.categoria]);
if (queryform.query!="")
switch(queryform.tipo) {
case 'parola':
parsedquery.where[1].expression.args[1].value="^"+queryform.query+"$";
break;
case 'sottostringa':
parsedquery.where[1].expression.args[1].value=queryform.query;
break;
case 'prefisso':
parsedquery.where[1].expression.args[1].value=queryform.query;
break;
case 'suffisso':
parsedquery.where[1].expression.args[1].value=queryform.query+"$";
break;
default:
parsedquery.where[1].expression.args[1].value="^"+queryform.query+"$";
};
return generator.stringify(parsedquery);
//return (parsedquery.where[0].triples)

}
Insert cell
Insert cell
Insert cell
Insert cell
viewof queryform = form(html`<form>
<table border="0" cellspacing="0" cellpadding="5px">



<tbody>
<tr bgcolor="lightgray">

<td align="right">
<select name="oggetto" value="oggetto">
<option value="forma">Forma</option>
<option value="lemma">Lemma</option>
</select>
</td>
<td>
<input type="text" id="query0" name="query" value="" title="Testo da ricercare">
</td>

<td>
<select name="tipo" title="Tipo di ricerca">
<option value="parola" onclick="">Parola</option>
<option value="sottostringa" onclick="">Sottostringa</option>
<option value="prefisso" onclick="">Prefisso</option>
<option value="suffisso" onclick="">Suffisso</option>
<option value="espressione" onclick="">Espressione regolare</option>
<option value="occorrenze" onclick="">Tutte le occorrenze</option>
</select>
</td>

<td align="right">
<select name="categoria" onchange="" title="Macro categoria">
<option value="all">Tutte le categorie</option>
<optgroup label="Volgare">
<option value="verbovolgare">Verbo volgare</option>
<option value="sostantivovolgare">Sostantivo volgare</option>
<option value="aggettivovolgare">Aggettivo volgare</option>
<option value="pronomevolgare">Pronome volgare</option>
<option value="articolovolgare">Articolo volgare</option>
<option value="avverbiovolgare">Avverbio volgare</option>
<option value="preposizionevolgare">Preposizione volgare</option>
<option value="congiunzionevolgare">Congiunzione volgare</option>
<option value="interiezionevolgare">Interiezione volgare</option>
<option value="onomasticavolgare">Onomastica volgare</option>
<option value="citazionevolgare">Citazione volgare</option>
</optgroup>
<optgroup label="Latino">
<option value="verbo_latino_v">Verbo latino</option>
<option value="sostantivo_latino_s">Sostantivo latino</option>
<option value="aggettivo_latino_a">Aggettivo latino</option>
<option value="pronome_latino_p">Pronome latino</option>
<option value="avverbio_latino_r">Avverbio latino</option>
<option value="preposizione_latino_e">Preposizione latino</option>
<option value="congiunzione_latino_c">Congiunzione latino</option>
<option value="interiezione_latino_i">Interiezione latino</option>
<option value="enclitica_latino_9">Enclitica latino</option>
<option value="citazione_latino_zi">Citazione latino</option>
<option value="simbolo_latino_yy">Simbolo latino</option>
</optgroup>
</select>
</td>

<td>
<a href="javascript:popupCategoria('0');" title="Configurazione categoria"><small>Categoria</small></a>
</td>


<td>
<span id="plainCatg0"><span id="span0"><small><font color="silver"></font></small></span></span>
<input type="hidden" name="plainCatg0" value="" readonly="readonly">
<input type="hidden" name="catg0" value=".+" readonly="readonly">
</td>

</tr>



<tr bgcolor="whitesmoke">

<td align="right">
<select name="oggetto1" value="oggetto">
<option value="forma">Forma</option>
<option value="lemma">Lemma</option>
</select>
</td>

<td>
<input type="text" id="query1" name="query1" value="" title="Testo da ricercare">
</td>

<td>
<select name="tipo1" title="Tipo di ricerca">
<option value="parola" onclick="">Parola</option>
<option value="sottostringa" onclick="">Sottostringa</option>
<option value="prefisso" onclick="">Prefisso</option>
<option value="suffisso" onclick="">Suffisso</option>
<option value="espressione" onclick="">Espressione regolare</option>
<option value="occorrenze" onclick="">Tutte le occorrenze</option>
</select>
</td>

<td align="right">
<select name="categoria1" onchange="" title="Macro categoria">
<option value="all">Tutte le categorie</option>
<optgroup label="Volgare">
<option value="verbovolgare">Verbo volgare</option>
<option value="sostantivovolgare">Sostantivo volgare</option>
<option value="aggettivovolgare">Aggettivo volgare</option>
<option value="pronomevolgare">Pronome volgare</option>
<option value="articolovolgare">Articolo volgare</option>
<option value="avverbiovolgare">Avverbio volgare</option>
<option value="preposizionevolgare">Preposizione volgare</option>
<option value="congiunzionevolgare">Congiunzione volgare</option>
<option value="interiezionevolgare">Interiezione volgare</option>
<option value="onomasticavolgare">Onomastica volgare</option>
<option value="citazionevolgare">Citazione volgare</option>
</optgroup>
<optgroup label="Latino">
<option value="verbo_latino_v">Verbo latino</option>
<option value="sostantivo_latino_s">Sostantivo latino</option>
<option value="aggettivo_latino_a">Aggettivo latino</option>
<option value="pronome_latino_p">Pronome latino</option>
<option value="avverbio_latino_r">Avverbio latino</option>
<option value="preposizione_latino_e">Preposizione latino</option>
<option value="congiunzione_latino_c">Congiunzione latino</option>
<option value="interiezione_latino_i">Interiezione latino</option>
<option value="enclitica_latino_9">Enclitica latino</option>
<option value="citazione_latino_zi">Citazione latino</option>
<option value="simbolo_latino_yy">Simbolo latino</option>
</optgroup>
</select>
</td>

<td>
<a href="javascript:popupCategoria('1');" title="Configurazione categoria"><small>Categoria</small></a>
</td>


<td>
<span id="plainCatg1"><span id="span1"><small><font color="silver"></font></small></span></span>
<input type="hidden" name="plainCatg1" value="" readonly="readonly">
<input type="hidden" name="catg1" value=".+" readonly="readonly">
</td>

</tr>



<tr bgcolor="lightgray">

<td align="right">
<select name="oggetto2" value="oggetto">
<option value="forma">Forma</option>
<option value="lemma">Lemma</option>
</select>
</td>

<td>
<input type="text" id="query2" name="query2" value="" title="Testo da ricercare">
</td>

<td>
<select name="tipo2" title="Tipo di ricerca">
<option value="parola" onclick="">Parola</option>
<option value="sottostringa" onclick="">Sottostringa</option>
<option value="prefisso" onclick="">Prefisso</option>
<option value="suffisso" onclick="">Suffisso</option>
<option value="espressione" onclick="">Espressione regolare</option>
<option value="occorrenze" onclick="">Tutte le occorrenze</option>
</select>
</td>

<td align="right">
<select name="categoria2" onchange="" title="Macro categoria">
<option value="all">Tutte le categorie</option>
<optgroup label="Volgare">
<option value="verbovolgare">Verbo volgare</option>
<option value="sostantivovolgare">Sostantivo volgare</option>
<option value="aggettivovolgare">Aggettivo volgare</option>
<option value="pronomevolgare">Pronome volgare</option>
<option value="articolovolgare">Articolo volgare</option>
<option value="avverbiovolgare">Avverbio volgare</option>
<option value="preposizionevolgare">Preposizione volgare</option>
<option value="congiunzionevolgare">Congiunzione volgare</option>
<option value="interiezionevolgare">Interiezione volgare</option>
<option value="onomasticavolgare">Onomastica volgare</option>
<option value="citazionevolgare">Citazione volgare</option>
</optgroup>
<optgroup label="Latino">
<option value="verbo_latino_v">Verbo latino</option>
<option value="sostantivo_latino_s">Sostantivo latino</option>
<option value="aggettivo_latino_a">Aggettivo latino</option>
<option value="pronome_latino_p">Pronome latino</option>
<option value="avverbio_latino_r">Avverbio latino</option>
<option value="preposizione_latino_e">Preposizione latino</option>
<option value="congiunzione_latino_c">Congiunzione latino</option>
<option value="interiezione_latino_i">Interiezione latino</option>
<option value="enclitica_latino_9">Enclitica latino</option>
<option value="citazione_latino_zi">Citazione latino</option>
<option value="simbolo_latino_yy">Simbolo latino</option>
</optgroup>
</select>
</td>

<td>
<a href="javascript:popupCategoria('2');" title="Configurazione categoria"><small>Categoria</small></a>
</td>


<td>
<span id="plainCatg2"><span id="span2"><small><font color="silver"></font></small></span></span>
<input type="hidden" name="plainCatg2" value="" readonly="readonly">
<input type="hidden" name="catg2" value=".+" readonly="readonly">
</td>

</tr>



<tr bgcolor="whitesmoke">

<td align="right">
<select name="oggetto3" value="oggetto">
<option value="forma">Forma</option>
<option value="lemma">Lemma</option>
</select>
</td>

<td>
<input type="text" id="query3" name="query3" value="" title="Testo da ricercare">
</td>

<td>
<select name="tipo3" title="Tipo di ricerca">
<option value="parola" onclick="">Parola</option>
<option value="sottostringa" onclick="">Sottostringa</option>
<option value="prefisso" onclick="">Prefisso</option>
<option value="suffisso" onclick="">Suffisso</option>
<option value="espressione" onclick="">Espressione regolare</option>
<option value="occorrenze" onclick="">Tutte le occorrenze</option>
</select>
</td>

<td align="right">
<select name="categoria3" onchange="" title="Macro categoria">
<option value="all">Tutte le categorie</option>
<optgroup label="Volgare">
<option value="verbovolgare">Verbo volgare</option>
<option value="sostantivovolgare">Sostantivo volgare</option>
<option value="aggettivovolgare">Aggettivo volgare</option>
<option value="pronomevolgare">Pronome volgare</option>
<option value="articolovolgare">Articolo volgare</option>
<option value="avverbiovolgare">Avverbio volgare</option>
<option value="preposizionevolgare">Preposizione volgare</option>
<option value="congiunzionevolgare">Congiunzione volgare</option>
<option value="interiezionevolgare">Interiezione volgare</option>
<option value="onomasticavolgare">Onomastica volgare</option>
<option value="citazionevolgare">Citazione volgare</option>
</optgroup>
<optgroup label="Latino">
<option value="verbo_latino_v">Verbo latino</option>
<option value="sostantivo_latino_s">Sostantivo latino</option>
<option value="aggettivo_latino_a">Aggettivo latino</option>
<option value="pronome_latino_p">Pronome latino</option>
<option value="avverbio_latino_r">Avverbio latino</option>
<option value="preposizione_latino_e">Preposizione latino</option>
<option value="congiunzione_latino_c">Congiunzione latino</option>
<option value="interiezione_latino_i">Interiezione latino</option>
<option value="enclitica_latino_9">Enclitica latino</option>
<option value="citazione_latino_zi">Citazione latino</option>
<option value="simbolo_latino_yy">Simbolo latino</option>
</optgroup>
</select>
</td>

<td>
<a href="javascript:popupCategoria('3');" title="Configurazione categoria"><small>Categoria</small></a>
</td>


<td>
<span id="plainCatg3"><span id="span3"><small><font color="silver"></font></small></span></span>
<input type="hidden" name="plainCatg3" value="" readonly="readonly">
<input type="hidden" name="catg3" value=".+" readonly="readonly">
</td>

</tr>



<tr bgcolor="lightgray">

<td align="right">
<select name="oggetto4" value="oggetto">
<option value="forma">Forma</option>
<option value="lemma">Lemma</option>
</select>
</td>

<td>
<input type="text" id="query4" name="query4" value="" title="Testo da ricercare">
</td>

<td>
<select name="tipo4" title="Tipo di ricerca">
<option value="parola" onclick="">Parola</option>
<option value="sottostringa" onclick="">Sottostringa</option>
<option value="prefisso" onclick="">Prefisso</option>
<option value="suffisso" onclick="">Suffisso</option>
<option value="espressione" onclick="">Espressione regolare</option>
<option value="occorrenze" onclick="">Tutte le occorrenze</option>
</select>
</td>

<td align="right">
<select name="categoria4" onchange="" title="Macro categoria">
<option value="all">Tutte le categorie</option>
<optgroup label="Volgare">
<option value="verbovolgare">Verbo volgare</option>
<option value="sostantivovolgare">Sostantivo volgare</option>
<option value="aggettivovolgare">Aggettivo volgare</option>
<option value="pronomevolgare">Pronome volgare</option>
<option value="articolovolgare">Articolo volgare</option>
<option value="avverbiovolgare">Avverbio volgare</option>
<option value="preposizionevolgare">Preposizione volgare</option>
<option value="congiunzionevolgare">Congiunzione volgare</option>
<option value="interiezionevolgare">Interiezione volgare</option>
<option value="onomasticavolgare">Onomastica volgare</option>
<option value="citazionevolgare">Citazione volgare</option>
</optgroup>
<optgroup label="Latino">
<option value="verbo_latino_v">Verbo latino</option>
<option value="sostantivo_latino_s">Sostantivo latino</option>
<option value="aggettivo_latino_a">Aggettivo latino</option>
<option value="pronome_latino_p">Pronome latino</option>
<option value="avverbio_latino_r">Avverbio latino</option>
<option value="preposizione_latino_e">Preposizione latino</option>
<option value="congiunzione_latino_c">Congiunzione latino</option>
<option value="interiezione_latino_i">Interiezione latino</option>
<option value="enclitica_latino_9">Enclitica latino</option>
<option value="citazione_latino_zi">Citazione latino</option>
<option value="simbolo_latino_yy">Simbolo latino</option>
</optgroup>
</select>
</td>

<td>
<a href="javascript:popupCategoria('4');" title="Configurazione categoria"><small>Categoria</small></a>
</td>


<td>
<span id="plainCatg4"><span id="span4"><small><font color="silver"></font></small></span></span>
<input type="hidden" name="plainCatg4" value="" readonly="readonly">
<input type="hidden" name="catg4" value=".+" readonly="readonly">
</td>

</tr>



<tr>
<td colspan="6">
<hr noshade="noshade" size="1" color="silver">
</td>
</tr>

<tr>
<td align="left" colspan="2">
<label>
Cerca in:
<select id="operand" name="operand" onchange="getElementById('nearOptions').style.display = (operand.options[operand.selectedIndex].value == 'near') ? 'inline' : 'none';">
<option value="and" selected="">AND</option>
<option value="or">OR</option>
<option value="not">NOT</option>
<option value="near">NEAR</option>
</select>
</label>
</td>

<td colspan="2">
<span id="nearOptions" style="display: none">
Distanza:
<select name="distance" id="distance">
<option>0</option><option>1</option><option>2</option><option>3</option><option>4</option><option>5</option><option>6</option><option>7</option><option>8</option><option>9</option><option>10</option><option>11</option><option>12</option><option>13</option><option>14</option><option>15</option><option>16</option><option>17</option><option>18</option><option>19</option><option>20</option><option>21</option><option>22</option><option>23</option><option>24</option><option>25</option><option>26</option><option>27</option><option>28</option><option>29</option><option>30</option><option>31</option><option>32</option><option>33</option><option>34</option><option>35</option><option>36</option><option>37</option><option>38</option><option>39</option><option>40</option><option>41</option><option>42</option><option>43</option><option>44</option><option>45</option><option>46</option><option>47</option><option>48</option><option>49</option><option>50</option><option>51</option><option>52</option><option>53</option><option>54</option><option>55</option><option>56</option><option>57</option><option>58</option><option>59</option><option>60</option><option>61</option><option>62</option><option>63</option><option>64</option><option>65</option><option>66</option><option>67</option><option>68</option><option>69</option><option>70</option><option>71</option><option>72</option><option>73</option><option>74</option><option>75</option><option>76</option><option>77</option><option>78</option><option>79</option><option>80</option><option>81</option><option>82</option><option>83</option><option>84</option><option>85</option><option>86</option><option>87</option><option>88</option><option>89</option><option>90</option><option>91</option><option>92</option><option>93</option><option>94</option><option>95</option><option>96</option><option>97</option><option>98</option><option>99</option><option>100</option>
</select>
<label><input type="checkbox" name="inorder">In ordine</label>
</span>
</td>

<td>
<input type="submit" name="grammar" value="Cerca" title="Applica i criteri di ricerca">
<input type="hidden" readonly="readonly" name="lang" value="all">
</td>
</tr>

</tbody></table>
</form>`)
Insert cell
myauthHeaders = new Headers({"Authorization": `Basic ${base64.encode(`hdnteam:yN81rZgFxrapkirBEPs`)}`});
Insert cell
data=fetch(`https://hdnlab1.isti.cnr.it/fuseki/prima_cantica_init/sparql?query=${encodeURIComponent(sparql)}`, {headers: myauthHeaders}).then(response => {
if (!response.ok) throw new Error(response.status);
return response.json();
})
Insert cell
data1=data.results.bindings
Insert cell
data2= data1.map(x => Object.assign({},{iri:x.Verbo.value,rappresentazione:x.Rappresentazione.value,funzione:x.Funzione.value,occorrenza:x.occ.value,}))
Insert cell
table(
data2,
{
nully: () => '<span style="color: red">No data</span>',
limit: 500,
enableFilter: false,
enableCSVDownload: true,
columns: [{
key: 'iri',
rappresentazione: 'rappresentazione',
render: val => `<a href="${val}" target="_blank">${val}</a>`
},
'rappresentazione',
'funzione',
'occorrenza'
]
}
)
Insert cell
import { table } from "@gampleman/table"
Insert cell
import {Button, Checkbox, Toggle, Radio, Range, Select, Text, Textarea, Search, Table} from "@observablehq/inputs"
Insert cell
data21=(await FileAttachment("categorie.json").text())
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more