Congratulations!

[Valid RSS] This is a valid RSS feed.

Recommendations

This feed is valid, but interoperability with the widest range of feed readers could be improved by implementing the following recommendations.

Source: http://planetrdf.com/index.rdf

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <rdf:RDF xmlns="http://purl.org/rss/1.0/" xmlns:planet="http://planetrdf.com/ns/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:admin="http://webns.net/mvcb/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  3. <channel rdf:about="http://planetrdf.com/">
  4.  <dc:date rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2024-03-11T14:21:53.000000Z</dc:date>
  5.  <title>Planet RDF</title>
  6.  <link>http://planetrdf.com/</link>
  7.  <admin:generatorAgent rdf:resource="http://www.mnot.net/python/RSS.py?version=0.44"></admin:generatorAgent>
  8.  <description>It's triples all the way down</description>
  9.  <items><rdf:Seq>
  10.   <rdf:li rdf:resource="https://trueg.wordpress.com/2014/09/03/protecting-and-sharing-linked-data-with-virtuoso/"></rdf:li>
  11.   <rdf:li rdf:resource="https://trueg.wordpress.com/2014/09/02/sharing-files-with-whomever-is-simple/"></rdf:li>
  12.   <rdf:li rdf:resource="https://trueg.wordpress.com/2012/09/28/digitally-sign-emails-with-your-x-509-certificate-in-evolution/"></rdf:li>
  13.   <rdf:li rdf:resource="https://davidepalmisano.wordpress.com/2010/07/05/sameas4j-little-drops-of-water-make-the-mighty-ocean/"></rdf:li>
  14.   <rdf:li rdf:resource="https://davidepalmisano.wordpress.com/2010/02/20/fbk-any23-and-my-involvement-in-sindice-com/"></rdf:li>
  15.   <rdf:li rdf:resource="https://davidepalmisano.wordpress.com/2009/12/26/cheap-linked-data-identifiers/"></rdf:li>
  16.   <rdf:li rdf:resource="https://davidepalmisano.wordpress.com/2009/12/13/rww-2009-top-10-semantic-web-products-one-year-later/"></rdf:li>
  17.   <rdf:li rdf:resource="https://davidepalmisano.wordpress.com/2009/09/20/the-italian-political-activism-and-the-semantic-web/"></rdf:li>
  18.   <rdf:li rdf:resource="https://planb.nicecupoftea.org/2023/12/24/til-gifski/"></rdf:li>
  19.   <rdf:li rdf:resource="https://planb.nicecupoftea.org/2023/05/04/mayke-day-4-ttn-and-lorawan-til/"></rdf:li>
  20.   <rdf:li rdf:resource="https://planb.nicecupoftea.org/2022/05/19/time-squish/"></rdf:li>
  21.   <rdf:li rdf:resource="https://planb.nicecupoftea.org/2021/05/08/sparkfun-edge-macos-x-ftdi/"></rdf:li>
  22.   <rdf:li rdf:resource="https://planb.nicecupoftea.org/2020/12/03/esp32-m5stickc-https-websockets-and-slack/"></rdf:li>
  23.   <rdf:li rdf:resource="https://planb.nicecupoftea.org/2020/11/14/improved-simpler-presence-robot/"></rdf:li>
  24.   <rdf:li rdf:resource="https://planb.nicecupoftea.org/2020/10/24/libbybot-a-posable-remote-presence-bot-made-from-a-raspberry-pi-3-updates/"></rdf:li>
  25.   <rdf:li rdf:resource="https://industrial-inference.com/2019/09/12/knowledge-graphs-101/"></rdf:li>
  26.   <rdf:li rdf:resource="https://industrial-inference.com/2011/05/14/preparing-a-project-gutenberg-book-for-use-on-a-6-ereader/"></rdf:li>
  27.   <rdf:li rdf:resource="https://industrial-inference.com/2011/04/11/some-pictures-of-carlton-gardens/"></rdf:li>
  28.   <rdf:li rdf:resource="https://industrial-inference.com/2010/08/31/note-to-self-convert-utf-8-w-bom-to-ascii-wix-db-using-gnu-uconv/"></rdf:li>
  29.   <rdf:li rdf:resource="https://industrial-inference.com/2010/03/10/programming-with-petri-nets/"></rdf:li>
  30.   <rdf:li rdf:resource="https://industrial-inference.com/2009/12/08/quantum-reasoners-hold-key-to-future-web/"></rdf:li>
  31.   <rdf:li rdf:resource="https://industrial-inference.com/2009/11/13/semantic-overflow-highlights-i/"></rdf:li>
  32.   <rdf:li rdf:resource="https://industrial-inference.com/2009/10/27/www-semanticoverflow-com-the-web-2-0-qa-site-for-all-things-web-3-0/"></rdf:li>
  33.   <rdf:li rdf:resource="https://industrial-inference.com/2009/03/20/quote-of-the-day-chris-sells-on-cocktail-parties/"></rdf:li>
  34.   <rdf:li rdf:resource="https://industrial-inference.com/2009/02/27/australian-port-a-new-wmd/"></rdf:li>
  35.   <rdf:li rdf:resource="https://industrial-inference.com/2008/11/18/relational-modeling-not-as-we-know-it/"></rdf:li>
  36.   <rdf:li rdf:resource="https://industrial-inference.com/2008/11/14/patternmatching/"></rdf:li>
  37.   <rdf:li rdf:resource="https://industrial-inference.com/2008/09/23/object-orientation-not-as-we-know-it/"></rdf:li>
  38.   <rdf:li rdf:resource="https://industrial-inference.com/2008/09/15/new-resources-for-linqtordf/"></rdf:li>
  39.   <rdf:li rdf:resource="https://industrial-inference.com/2008/08/27/not-another-mapping-markup-language/"></rdf:li>
  40.  </rdf:Seq></items>
  41. </channel>
  42. <item rdf:about="https://trueg.wordpress.com/2014/09/03/protecting-and-sharing-linked-data-with-virtuoso/">
  43.  <dc:creator>Sebastian Trueg</dc:creator>
  44.  <dc:source>Semantic Desktop by Sebastian Trueg</dc:source>
  45.  <dc:relation>http://trueg.wordpress.com/</dc:relation>
  46.  <planet:content xmlns="http://www.w3.org/1999/xhtml" rdf:parseType="Literal">
  47. <div>
  48. <p><em><strong>Disclaimer</strong>: Many of the features presented
  49. here are rather new and can not be found&#160;in&#160; the
  50. open-source version of Virtuoso.</em></p>
  51. <p>Last time we saw <a title=
  52. "Sharing Files With Whomever Is Simple" href=
  53. "https://trueg.wordpress.com/2014/09/02/sharing-files-with-whomever-is-simple/">
  54. how to share files and folders stored in the Virtuoso DAV
  55. system</a>. Today we will protect and share data stored in
  56. Virtuoso’s Triple Store – we will share RDF data.</p>
  57. <p>Virtuoso is actually a quadruple-store which means each triple
  58. lives in a named graph. In Virtuoso named graphs can be public or
  59. private (in reality it is a bit more complex than that but this
  60. view on things is sufficient for our purposes), public graphs being
  61. readable and writable by anyone who has permission to read or write
  62. in general, private graphs only being readable and writable by
  63. administrators and those to which named graph permissions have been
  64. granted. The latter case is what interests us today.</p>
  65. <p>We will start by inserting some triples into a named
  66. graph&#160;as <em>dba</em> – the master of the Virtuoso
  67. universe:</p>
  68. <p><a href=
  69. "https://trueg.files.wordpress.com/2014/09/sparql1.png"><img data-attachment-id="914"
  70. data-permalink=
  71. "https://trueg.wordpress.com/2014/09/03/protecting-and-sharing-linked-data-with-virtuoso/sparql1/"
  72. data-orig-file=
  73. "https://trueg.files.wordpress.com/2014/09/sparql1.png"
  74. data-orig-size="1256,826" data-comments-opened="1" data-image-meta=
  75. "{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}"
  76. data-image-title="Virtuoso Sparql Endpoint" data-image-description=
  77. "" data-image-caption="" data-medium-file=
  78. "https://trueg.files.wordpress.com/2014/09/sparql1.png?w=300"
  79. data-large-file=
  80. "https://trueg.files.wordpress.com/2014/09/sparql1.png?w=676"
  81. class="aligncenter size-medium wp-image-914" src=
  82. "https://trueg.files.wordpress.com/2014/09/sparql1.png?w=300&amp;h=197"
  83. alt="Virtuoso Sparql Endpoint" width="300" height="197" srcset=
  84. "https://trueg.files.wordpress.com/2014/09/sparql1.png?w=300 300w, https://trueg.files.wordpress.com/2014/09/sparql1.png?w=600 600w, https://trueg.files.wordpress.com/2014/09/sparql1.png?w=150 150w"
  85. sizes="(max-width: 300px) 100vw, 300px" /></a></p>
  86. <p><a href=
  87. "https://trueg.files.wordpress.com/2014/09/sparql2.png"><img data-attachment-id="915"
  88. data-permalink=
  89. "https://trueg.wordpress.com/2014/09/03/protecting-and-sharing-linked-data-with-virtuoso/sparql2/"
  90. data-orig-file=
  91. "https://trueg.files.wordpress.com/2014/09/sparql2.png"
  92. data-orig-size="454,129" data-comments-opened="1" data-image-meta=
  93. "{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}"
  94. data-image-title="Sparql Result" data-image-description=""
  95. data-image-caption="" data-medium-file=
  96. "https://trueg.files.wordpress.com/2014/09/sparql2.png?w=300"
  97. data-large-file=
  98. "https://trueg.files.wordpress.com/2014/09/sparql2.png?w=454"
  99. class="aligncenter size-medium wp-image-915" src=
  100. "https://trueg.files.wordpress.com/2014/09/sparql2.png?w=300&amp;h=85"
  101. alt="Sparql Result" width="300" height="85" srcset=
  102. "https://trueg.files.wordpress.com/2014/09/sparql2.png?w=300 300w, https://trueg.files.wordpress.com/2014/09/sparql2.png?w=150 150w, https://trueg.files.wordpress.com/2014/09/sparql2.png 454w"
  103. sizes="(max-width: 300px) 100vw, 300px" /></a></p>
  104. <p>This graph is now public and can be queried by anyone. Since we
  105. want to make it private we quickly need to change into a SQL
  106. session since this part is typically performed by an application
  107. rather than manually:</p>
  108. <pre>$ isql-v localhost:1112 dba dba
  109. Connected to OpenLink Virtuoso
  110. Driver: 07.10.3211 OpenLink Virtuoso ODBC Driver
  111. OpenLink Interactive SQL (Virtuoso), version 0.9849b.
  112. Type HELP; for help and EXIT; to exit.
  113. SQL&gt; DB.DBA.RDF_GRAPH_GROUP_INS ('http://www.openlinksw.com/schemas/virtrdf#PrivateGraphs', 'urn:trueg:demo');
  114.  
  115. Done. -- 2 msec.</pre>
  116. <p>Now our new named graph <code>urn:trueg:demo</code> is private
  117. and&#160;its contents cannot be seen by anyone. We can easily test
  118. this by logging out and trying to query the graph:</p>
  119. <p><a href=
  120. "https://trueg.files.wordpress.com/2014/09/sparql3.png"><img data-attachment-id="917"
  121. data-permalink=
  122. "https://trueg.wordpress.com/2014/09/03/protecting-and-sharing-linked-data-with-virtuoso/sparql3/"
  123. data-orig-file=
  124. "https://trueg.files.wordpress.com/2014/09/sparql3.png"
  125. data-orig-size="1256,826" data-comments-opened="1" data-image-meta=
  126. "{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}"
  127. data-image-title="Sparql Query" data-image-description=""
  128. data-image-caption="" data-medium-file=
  129. "https://trueg.files.wordpress.com/2014/09/sparql3.png?w=300"
  130. data-large-file=
  131. "https://trueg.files.wordpress.com/2014/09/sparql3.png?w=676"
  132. class="aligncenter size-medium wp-image-917" src=
  133. "https://trueg.files.wordpress.com/2014/09/sparql3.png?w=300&amp;h=197"
  134. alt="Sparql Query" width="300" height="197" srcset=
  135. "https://trueg.files.wordpress.com/2014/09/sparql3.png?w=300 300w, https://trueg.files.wordpress.com/2014/09/sparql3.png?w=600 600w, https://trueg.files.wordpress.com/2014/09/sparql3.png?w=150 150w"
  136. sizes="(max-width: 300px) 100vw, 300px" /></a><br />
  137. <a href=
  138. "https://trueg.files.wordpress.com/2014/09/sparql4.png"><img data-attachment-id="916"
  139. data-permalink=
  140. "https://trueg.wordpress.com/2014/09/03/protecting-and-sharing-linked-data-with-virtuoso/sparql4/"
  141. data-orig-file=
  142. "https://trueg.files.wordpress.com/2014/09/sparql4.png"
  143. data-orig-size="1256,76" data-comments-opened="1" data-image-meta=
  144. "{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}"
  145. data-image-title="Sparql Query Result" data-image-description=""
  146. data-image-caption="" data-medium-file=
  147. "https://trueg.files.wordpress.com/2014/09/sparql4.png?w=300"
  148. data-large-file=
  149. "https://trueg.files.wordpress.com/2014/09/sparql4.png?w=676"
  150. class="aligncenter size-medium wp-image-916" src=
  151. "https://trueg.files.wordpress.com/2014/09/sparql4.png?w=300&amp;h=18"
  152. alt="Sparql Query Result" width="300" height="18" srcset=
  153. "https://trueg.files.wordpress.com/2014/09/sparql4.png?w=300 300w, https://trueg.files.wordpress.com/2014/09/sparql4.png?w=600 600w, https://trueg.files.wordpress.com/2014/09/sparql4.png?w=150 150w"
  154. sizes="(max-width: 300px) 100vw, 300px" /></a></p>
  155. <p>But now we want to share the contents of this named graph with
  156. someone. Like before we will use my LinkedIn account. This time,
  157. however, we will not use a UI but Virtuoso’s RESTful ACL API to
  158. create the necessary rules for sharing the named graph. The API
  159. uses Turtle as its main input format. Thus, we will describe the
  160. ACL rule used to share the contents of the named graph as
  161. follows.</p>
  162. <pre>@prefix acl: &lt;http://www.w3.org/ns/auth/acl#&gt; .
  163. @prefix oplacl: &lt;http://www.openlinksw.com/ontology/acl#&gt; .
  164. &lt;#rule&gt; a acl:Authorization ;
  165.  rdfs:label "Share Demo Graph with trueg's LinkedIn account" ;
  166.  acl:agent &lt;http://www.linkedin.com/in/trueg&gt; ;
  167.  acl:accessTo &lt;urn:trueg:demo&gt; ;
  168.  oplacl:hasAccessMode oplacl:Read ;
  169.  oplacl:hasScope oplacl:PrivateGraphs .</pre>
  170. <p>Virtuoso makes use of the <a href=
  171. "http://www.w3.org/ns/auth/acl#">ACL ontology proposed by the
  172. W3C</a> and extends on it with several custom classes and
  173. properties in the <a href=
  174. "http://www.openlinksw.com/ontology/acl#">OpenLink ACL
  175. Ontology</a>. Most of this little Turtle snippet should be obvious:
  176. we create an Authorization resource which grants Read access to
  177. <code>urn:trueg:demo</code> for agent <em><a href=
  178. "http://www.linkedin.com/in/trueg" rel=
  179. "nofollow">http://www.linkedin.com/in/trueg</a></em>. The only
  180. tricky part is the scope. Virtuoso has the concept of ACL scopes
  181. which group rules by their resource type. In this case the scope is
  182. private graphs, another typical scope would be DAV resources.</p>
  183. <p>Given that file <em>rule.ttl</em> contains the above
  184. resource&#160;we can post the rule via the RESTful ACL API:</p>
  185. <pre>
  186. $ curl -X POST --data-binary @rule.ttl -H"Content-Type: text/turtle" -u dba:dba http://localhost:8890/acl/rules</pre>
  187. <p>As a result we get the full rule resource including additional
  188. properties added by the API.</p>
  189. <p>Finally we will login using my LinkedIn identity and are granted
  190. read access to the graph:</p>
  191. <p><a href=
  192. "https://trueg.files.wordpress.com/2014/09/sparql5.png"><img data-attachment-id="921"
  193. data-permalink=
  194. "https://trueg.wordpress.com/2014/09/03/protecting-and-sharing-linked-data-with-virtuoso/sparql5/"
  195. data-orig-file=
  196. "https://trueg.files.wordpress.com/2014/09/sparql5.png"
  197. data-orig-size="590,361" data-comments-opened="1" data-image-meta=
  198. "{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}"
  199. data-image-title="SPARQL Endpoint Login" data-image-description=""
  200. data-image-caption="" data-medium-file=
  201. "https://trueg.files.wordpress.com/2014/09/sparql5.png?w=300"
  202. data-large-file=
  203. "https://trueg.files.wordpress.com/2014/09/sparql5.png?w=590"
  204. class="aligncenter size-medium wp-image-921" src=
  205. "https://trueg.files.wordpress.com/2014/09/sparql5.png?w=300&amp;h=183"
  206. alt="SPARQL Endpoint Login" width="300" height="183" srcset=
  207. "https://trueg.files.wordpress.com/2014/09/sparql5.png?w=300 300w, https://trueg.files.wordpress.com/2014/09/sparql5.png?w=150 150w, https://trueg.files.wordpress.com/2014/09/sparql5.png 590w"
  208. sizes="(max-width: 300px) 100vw, 300px" /></a><br />
  209. <a href=
  210. "https://trueg.files.wordpress.com/2014/09/sparql6.png"><img data-attachment-id="920"
  211. data-permalink=
  212. "https://trueg.wordpress.com/2014/09/03/protecting-and-sharing-linked-data-with-virtuoso/sparql6/"
  213. data-orig-file=
  214. "https://trueg.files.wordpress.com/2014/09/sparql6.png"
  215. data-orig-size="459,532" data-comments-opened="1" data-image-meta=
  216. "{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}"
  217. data-image-title="sparql6" data-image-description=""
  218. data-image-caption="" data-medium-file=
  219. "https://trueg.files.wordpress.com/2014/09/sparql6.png?w=259"
  220. data-large-file=
  221. "https://trueg.files.wordpress.com/2014/09/sparql6.png?w=459"
  222. class="aligncenter size-medium wp-image-920" src=
  223. "https://trueg.files.wordpress.com/2014/09/sparql6.png?w=258&amp;h=300"
  224. alt="sparql6" width="258" height="300" srcset=
  225. "https://trueg.files.wordpress.com/2014/09/sparql6.png?w=258 258w, https://trueg.files.wordpress.com/2014/09/sparql6.png?w=129 129w, https://trueg.files.wordpress.com/2014/09/sparql6.png 459w"
  226. sizes="(max-width: 258px) 100vw, 258px" /></a><br />
  227. <a href=
  228. "https://trueg.files.wordpress.com/2014/09/sparql7.png"><img data-attachment-id="919"
  229. data-permalink=
  230. "https://trueg.wordpress.com/2014/09/03/protecting-and-sharing-linked-data-with-virtuoso/sparql7/"
  231. data-orig-file=
  232. "https://trueg.files.wordpress.com/2014/09/sparql7.png"
  233. data-orig-size="1266,831" data-comments-opened="1" data-image-meta=
  234. "{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}"
  235. data-image-title="sparql7" data-image-description=""
  236. data-image-caption="" data-medium-file=
  237. "https://trueg.files.wordpress.com/2014/09/sparql7.png?w=300"
  238. data-large-file=
  239. "https://trueg.files.wordpress.com/2014/09/sparql7.png?w=676"
  240. class="aligncenter size-medium wp-image-919" src=
  241. "https://trueg.files.wordpress.com/2014/09/sparql7.png?w=300&amp;h=196"
  242. alt="sparql7" width="300" height="196" srcset=
  243. "https://trueg.files.wordpress.com/2014/09/sparql7.png?w=300 300w, https://trueg.files.wordpress.com/2014/09/sparql7.png?w=597 597w, https://trueg.files.wordpress.com/2014/09/sparql7.png?w=150 150w"
  244. sizes="(max-width: 300px) 100vw, 300px" /></a><br />
  245. <a href=
  246. "https://trueg.files.wordpress.com/2014/09/sparql8.png"><img data-attachment-id="918"
  247. data-permalink=
  248. "https://trueg.wordpress.com/2014/09/03/protecting-and-sharing-linked-data-with-virtuoso/sparql8/"
  249. data-orig-file=
  250. "https://trueg.files.wordpress.com/2014/09/sparql8.png"
  251. data-orig-size="1266,231" data-comments-opened="1" data-image-meta=
  252. "{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}"
  253. data-image-title="sparql8" data-image-description=""
  254. data-image-caption="" data-medium-file=
  255. "https://trueg.files.wordpress.com/2014/09/sparql8.png?w=300"
  256. data-large-file=
  257. "https://trueg.files.wordpress.com/2014/09/sparql8.png?w=676"
  258. class="aligncenter size-medium wp-image-918" src=
  259. "https://trueg.files.wordpress.com/2014/09/sparql8.png?w=300&amp;h=54"
  260. alt="sparql8" width="300" height="54" srcset=
  261. "https://trueg.files.wordpress.com/2014/09/sparql8.png?w=300 300w, https://trueg.files.wordpress.com/2014/09/sparql8.png?w=296 296w, https://trueg.files.wordpress.com/2014/09/sparql8.png?w=592 592w, https://trueg.files.wordpress.com/2014/09/sparql8.png?w=150 150w"
  262. sizes="(max-width: 300px) 100vw, 300px" /></a></p>
  263. <p>We see all the original triples in the private graph. And as
  264. before with DAV resources no local account is necessary to get
  265. access to named graphs. Of course we can also grant write access,
  266. use groups, etc.. But those are topics for another day.</p>
  267. <h2>Technical Footnote</h2>
  268. <p>Using ACLs with named graphs as described in this article
  269. requires some basic configuration. The ACL system is disabled by
  270. default. In order to enable it for the default application realm
  271. (another topic for another day) the following SPARQL statement
  272. needs to be executed as administrator:</p>
  273. <pre>sparql
  274. prefix oplacl: &lt;http://www.openlinksw.com/ontology/acl#&gt;
  275. with &lt;urn:virtuoso:val:config&gt;
  276. delete {
  277.  oplacl:DefaultRealm oplacl:hasDisabledAclScope oplacl:Query , oplacl:PrivateGraphs .
  278. }
  279. insert {
  280.  oplacl:DefaultRealm oplacl:hasEnabledAclScope oplacl:Query , oplacl:PrivateGraphs .
  281. };</pre>
  282. <p>This will enable ACLs for named graphs and SPARQL in general.
  283. Finally the LinkedIn account from the example requires generic
  284. SPARQL read permissions. The simplest approach is to just allow
  285. anyone to SPARQL read:</p>
  286. <pre>@prefix acl: &lt;http://www.w3.org/ns/auth/acl#&gt; .
  287. @prefix oplacl: &lt;http://www.openlinksw.com/ontology/acl#&gt; .
  288. &lt;#rule&gt; a acl:Authorization ;
  289.  rdfs:label "Allow Anyone to SPARQL Read" ;
  290.  acl:agentClass foaf:Agent ;
  291.  acl:accessTo &lt;urn:virtuoso:access:sparql&gt; ;
  292.  oplacl:hasAccessMode oplacl:Read ;
  293.  oplacl:hasScope oplacl:Query .</pre>
  294. <p>I will explain these technical concepts in more detail in
  295. another article.</p>
  296. </div>
  297. </planet:content>
  298.  <dc:date rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2024-03-11T14:21:48.000000Z</dc:date>
  299.  <title>Protecting And Sharing Linked Data With Virtuoso</title>
  300.  <link>https://trueg.wordpress.com/2014/09/03/protecting-and-sharing-linked-data-with-virtuoso/</link>
  301.  <content:encoded rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral"><![CDATA[
  302. <div xmlns='http://www.w3.org/1999/xhtml'>
  303. <div>
  304. <p><em><strong>Disclaimer</strong>: Many of the features presented
  305. here are rather new and can not be found&#160;in&#160; the
  306. open-source version of Virtuoso.</em></p>
  307. <p>Last time we saw <a title=
  308. "Sharing Files With Whomever Is Simple" href=
  309. "https://trueg.wordpress.com/2014/09/02/sharing-files-with-whomever-is-simple/">
  310. how to share files and folders stored in the Virtuoso DAV
  311. system</a>. Today we will protect and share data stored in
  312. Virtuoso’s Triple Store – we will share RDF data.</p>
  313. <p>Virtuoso is actually a quadruple-store which means each triple
  314. lives in a named graph. In Virtuoso named graphs can be public or
  315. private (in reality it is a bit more complex than that but this
  316. view on things is sufficient for our purposes), public graphs being
  317. readable and writable by anyone who has permission to read or write
  318. in general, private graphs only being readable and writable by
  319. administrators and those to which named graph permissions have been
  320. granted. The latter case is what interests us today.</p>
  321. <p>We will start by inserting some triples into a named
  322. graph&#160;as <em>dba</em> – the master of the Virtuoso
  323. universe:</p>
  324. <p><a href=
  325. "https://trueg.files.wordpress.com/2014/09/sparql1.png"><img data-attachment-id="914"
  326. data-permalink=
  327. "https://trueg.wordpress.com/2014/09/03/protecting-and-sharing-linked-data-with-virtuoso/sparql1/"
  328. data-orig-file=
  329. "https://trueg.files.wordpress.com/2014/09/sparql1.png"
  330. data-orig-size="1256,826" data-comments-opened="1" data-image-meta=
  331. "{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}"
  332. data-image-title="Virtuoso Sparql Endpoint" data-image-description=
  333. "" data-image-caption="" data-medium-file=
  334. "https://trueg.files.wordpress.com/2014/09/sparql1.png?w=300"
  335. data-large-file=
  336. "https://trueg.files.wordpress.com/2014/09/sparql1.png?w=676"
  337. class="aligncenter size-medium wp-image-914" src=
  338. "https://trueg.files.wordpress.com/2014/09/sparql1.png?w=300&amp;h=197"
  339. alt="Virtuoso Sparql Endpoint" width="300" height="197" srcset=
  340. "https://trueg.files.wordpress.com/2014/09/sparql1.png?w=300 300w, https://trueg.files.wordpress.com/2014/09/sparql1.png?w=600 600w, https://trueg.files.wordpress.com/2014/09/sparql1.png?w=150 150w"
  341. sizes="(max-width: 300px) 100vw, 300px" /></a></p>
  342. <p><a href=
  343. "https://trueg.files.wordpress.com/2014/09/sparql2.png"><img data-attachment-id="915"
  344. data-permalink=
  345. "https://trueg.wordpress.com/2014/09/03/protecting-and-sharing-linked-data-with-virtuoso/sparql2/"
  346. data-orig-file=
  347. "https://trueg.files.wordpress.com/2014/09/sparql2.png"
  348. data-orig-size="454,129" data-comments-opened="1" data-image-meta=
  349. "{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}"
  350. data-image-title="Sparql Result" data-image-description=""
  351. data-image-caption="" data-medium-file=
  352. "https://trueg.files.wordpress.com/2014/09/sparql2.png?w=300"
  353. data-large-file=
  354. "https://trueg.files.wordpress.com/2014/09/sparql2.png?w=454"
  355. class="aligncenter size-medium wp-image-915" src=
  356. "https://trueg.files.wordpress.com/2014/09/sparql2.png?w=300&amp;h=85"
  357. alt="Sparql Result" width="300" height="85" srcset=
  358. "https://trueg.files.wordpress.com/2014/09/sparql2.png?w=300 300w, https://trueg.files.wordpress.com/2014/09/sparql2.png?w=150 150w, https://trueg.files.wordpress.com/2014/09/sparql2.png 454w"
  359. sizes="(max-width: 300px) 100vw, 300px" /></a></p>
  360. <p>This graph is now public and can be queried by anyone. Since we
  361. want to make it private we quickly need to change into a SQL
  362. session since this part is typically performed by an application
  363. rather than manually:</p>
  364. <pre>$ isql-v localhost:1112 dba dba
  365. Connected to OpenLink Virtuoso
  366. Driver: 07.10.3211 OpenLink Virtuoso ODBC Driver
  367. OpenLink Interactive SQL (Virtuoso), version 0.9849b.
  368. Type HELP; for help and EXIT; to exit.
  369. SQL&gt; DB.DBA.RDF_GRAPH_GROUP_INS ('http://www.openlinksw.com/schemas/virtrdf#PrivateGraphs', 'urn:trueg:demo');
  370.  
  371. Done. -- 2 msec.</pre>
  372. <p>Now our new named graph <code>urn:trueg:demo</code> is private
  373. and&#160;its contents cannot be seen by anyone. We can easily test
  374. this by logging out and trying to query the graph:</p>
  375. <p><a href=
  376. "https://trueg.files.wordpress.com/2014/09/sparql3.png"><img data-attachment-id="917"
  377. data-permalink=
  378. "https://trueg.wordpress.com/2014/09/03/protecting-and-sharing-linked-data-with-virtuoso/sparql3/"
  379. data-orig-file=
  380. "https://trueg.files.wordpress.com/2014/09/sparql3.png"
  381. data-orig-size="1256,826" data-comments-opened="1" data-image-meta=
  382. "{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}"
  383. data-image-title="Sparql Query" data-image-description=""
  384. data-image-caption="" data-medium-file=
  385. "https://trueg.files.wordpress.com/2014/09/sparql3.png?w=300"
  386. data-large-file=
  387. "https://trueg.files.wordpress.com/2014/09/sparql3.png?w=676"
  388. class="aligncenter size-medium wp-image-917" src=
  389. "https://trueg.files.wordpress.com/2014/09/sparql3.png?w=300&amp;h=197"
  390. alt="Sparql Query" width="300" height="197" srcset=
  391. "https://trueg.files.wordpress.com/2014/09/sparql3.png?w=300 300w, https://trueg.files.wordpress.com/2014/09/sparql3.png?w=600 600w, https://trueg.files.wordpress.com/2014/09/sparql3.png?w=150 150w"
  392. sizes="(max-width: 300px) 100vw, 300px" /></a><br />
  393. <a href=
  394. "https://trueg.files.wordpress.com/2014/09/sparql4.png"><img data-attachment-id="916"
  395. data-permalink=
  396. "https://trueg.wordpress.com/2014/09/03/protecting-and-sharing-linked-data-with-virtuoso/sparql4/"
  397. data-orig-file=
  398. "https://trueg.files.wordpress.com/2014/09/sparql4.png"
  399. data-orig-size="1256,76" data-comments-opened="1" data-image-meta=
  400. "{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}"
  401. data-image-title="Sparql Query Result" data-image-description=""
  402. data-image-caption="" data-medium-file=
  403. "https://trueg.files.wordpress.com/2014/09/sparql4.png?w=300"
  404. data-large-file=
  405. "https://trueg.files.wordpress.com/2014/09/sparql4.png?w=676"
  406. class="aligncenter size-medium wp-image-916" src=
  407. "https://trueg.files.wordpress.com/2014/09/sparql4.png?w=300&amp;h=18"
  408. alt="Sparql Query Result" width="300" height="18" srcset=
  409. "https://trueg.files.wordpress.com/2014/09/sparql4.png?w=300 300w, https://trueg.files.wordpress.com/2014/09/sparql4.png?w=600 600w, https://trueg.files.wordpress.com/2014/09/sparql4.png?w=150 150w"
  410. sizes="(max-width: 300px) 100vw, 300px" /></a></p>
  411. <p>But now we want to share the contents of this named graph with
  412. someone. Like before we will use my LinkedIn account. This time,
  413. however, we will not use a UI but Virtuoso’s RESTful ACL API to
  414. create the necessary rules for sharing the named graph. The API
  415. uses Turtle as its main input format. Thus, we will describe the
  416. ACL rule used to share the contents of the named graph as
  417. follows.</p>
  418. <pre>@prefix acl: &lt;http://www.w3.org/ns/auth/acl#&gt; .
  419. @prefix oplacl: &lt;http://www.openlinksw.com/ontology/acl#&gt; .
  420. &lt;#rule&gt; a acl:Authorization ;
  421.  rdfs:label "Share Demo Graph with trueg's LinkedIn account" ;
  422.  acl:agent &lt;http://www.linkedin.com/in/trueg&gt; ;
  423.  acl:accessTo &lt;urn:trueg:demo&gt; ;
  424.  oplacl:hasAccessMode oplacl:Read ;
  425.  oplacl:hasScope oplacl:PrivateGraphs .</pre>
  426. <p>Virtuoso makes use of the <a href=
  427. "http://www.w3.org/ns/auth/acl#">ACL ontology proposed by the
  428. W3C</a> and extends on it with several custom classes and
  429. properties in the <a href=
  430. "http://www.openlinksw.com/ontology/acl#">OpenLink ACL
  431. Ontology</a>. Most of this little Turtle snippet should be obvious:
  432. we create an Authorization resource which grants Read access to
  433. <code>urn:trueg:demo</code> for agent <em><a href=
  434. "http://www.linkedin.com/in/trueg" rel=
  435. "nofollow">http://www.linkedin.com/in/trueg</a></em>. The only
  436. tricky part is the scope. Virtuoso has the concept of ACL scopes
  437. which group rules by their resource type. In this case the scope is
  438. private graphs, another typical scope would be DAV resources.</p>
  439. <p>Given that file <em>rule.ttl</em> contains the above
  440. resource&#160;we can post the rule via the RESTful ACL API:</p>
  441. <pre>
  442. $ curl -X POST --data-binary @rule.ttl -H"Content-Type: text/turtle" -u dba:dba http://localhost:8890/acl/rules</pre>
  443. <p>As a result we get the full rule resource including additional
  444. properties added by the API.</p>
  445. <p>Finally we will login using my LinkedIn identity and are granted
  446. read access to the graph:</p>
  447. <p><a href=
  448. "https://trueg.files.wordpress.com/2014/09/sparql5.png"><img data-attachment-id="921"
  449. data-permalink=
  450. "https://trueg.wordpress.com/2014/09/03/protecting-and-sharing-linked-data-with-virtuoso/sparql5/"
  451. data-orig-file=
  452. "https://trueg.files.wordpress.com/2014/09/sparql5.png"
  453. data-orig-size="590,361" data-comments-opened="1" data-image-meta=
  454. "{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}"
  455. data-image-title="SPARQL Endpoint Login" data-image-description=""
  456. data-image-caption="" data-medium-file=
  457. "https://trueg.files.wordpress.com/2014/09/sparql5.png?w=300"
  458. data-large-file=
  459. "https://trueg.files.wordpress.com/2014/09/sparql5.png?w=590"
  460. class="aligncenter size-medium wp-image-921" src=
  461. "https://trueg.files.wordpress.com/2014/09/sparql5.png?w=300&amp;h=183"
  462. alt="SPARQL Endpoint Login" width="300" height="183" srcset=
  463. "https://trueg.files.wordpress.com/2014/09/sparql5.png?w=300 300w, https://trueg.files.wordpress.com/2014/09/sparql5.png?w=150 150w, https://trueg.files.wordpress.com/2014/09/sparql5.png 590w"
  464. sizes="(max-width: 300px) 100vw, 300px" /></a><br />
  465. <a href=
  466. "https://trueg.files.wordpress.com/2014/09/sparql6.png"><img data-attachment-id="920"
  467. data-permalink=
  468. "https://trueg.wordpress.com/2014/09/03/protecting-and-sharing-linked-data-with-virtuoso/sparql6/"
  469. data-orig-file=
  470. "https://trueg.files.wordpress.com/2014/09/sparql6.png"
  471. data-orig-size="459,532" data-comments-opened="1" data-image-meta=
  472. "{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}"
  473. data-image-title="sparql6" data-image-description=""
  474. data-image-caption="" data-medium-file=
  475. "https://trueg.files.wordpress.com/2014/09/sparql6.png?w=259"
  476. data-large-file=
  477. "https://trueg.files.wordpress.com/2014/09/sparql6.png?w=459"
  478. class="aligncenter size-medium wp-image-920" src=
  479. "https://trueg.files.wordpress.com/2014/09/sparql6.png?w=258&amp;h=300"
  480. alt="sparql6" width="258" height="300" srcset=
  481. "https://trueg.files.wordpress.com/2014/09/sparql6.png?w=258 258w, https://trueg.files.wordpress.com/2014/09/sparql6.png?w=129 129w, https://trueg.files.wordpress.com/2014/09/sparql6.png 459w"
  482. sizes="(max-width: 258px) 100vw, 258px" /></a><br />
  483. <a href=
  484. "https://trueg.files.wordpress.com/2014/09/sparql7.png"><img data-attachment-id="919"
  485. data-permalink=
  486. "https://trueg.wordpress.com/2014/09/03/protecting-and-sharing-linked-data-with-virtuoso/sparql7/"
  487. data-orig-file=
  488. "https://trueg.files.wordpress.com/2014/09/sparql7.png"
  489. data-orig-size="1266,831" data-comments-opened="1" data-image-meta=
  490. "{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}"
  491. data-image-title="sparql7" data-image-description=""
  492. data-image-caption="" data-medium-file=
  493. "https://trueg.files.wordpress.com/2014/09/sparql7.png?w=300"
  494. data-large-file=
  495. "https://trueg.files.wordpress.com/2014/09/sparql7.png?w=676"
  496. class="aligncenter size-medium wp-image-919" src=
  497. "https://trueg.files.wordpress.com/2014/09/sparql7.png?w=300&amp;h=196"
  498. alt="sparql7" width="300" height="196" srcset=
  499. "https://trueg.files.wordpress.com/2014/09/sparql7.png?w=300 300w, https://trueg.files.wordpress.com/2014/09/sparql7.png?w=597 597w, https://trueg.files.wordpress.com/2014/09/sparql7.png?w=150 150w"
  500. sizes="(max-width: 300px) 100vw, 300px" /></a><br />
  501. <a href=
  502. "https://trueg.files.wordpress.com/2014/09/sparql8.png"><img data-attachment-id="918"
  503. data-permalink=
  504. "https://trueg.wordpress.com/2014/09/03/protecting-and-sharing-linked-data-with-virtuoso/sparql8/"
  505. data-orig-file=
  506. "https://trueg.files.wordpress.com/2014/09/sparql8.png"
  507. data-orig-size="1266,231" data-comments-opened="1" data-image-meta=
  508. "{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}"
  509. data-image-title="sparql8" data-image-description=""
  510. data-image-caption="" data-medium-file=
  511. "https://trueg.files.wordpress.com/2014/09/sparql8.png?w=300"
  512. data-large-file=
  513. "https://trueg.files.wordpress.com/2014/09/sparql8.png?w=676"
  514. class="aligncenter size-medium wp-image-918" src=
  515. "https://trueg.files.wordpress.com/2014/09/sparql8.png?w=300&amp;h=54"
  516. alt="sparql8" width="300" height="54" srcset=
  517. "https://trueg.files.wordpress.com/2014/09/sparql8.png?w=300 300w, https://trueg.files.wordpress.com/2014/09/sparql8.png?w=296 296w, https://trueg.files.wordpress.com/2014/09/sparql8.png?w=592 592w, https://trueg.files.wordpress.com/2014/09/sparql8.png?w=150 150w"
  518. sizes="(max-width: 300px) 100vw, 300px" /></a></p>
  519. <p>We see all the original triples in the private graph. And as
  520. before with DAV resources no local account is necessary to get
  521. access to named graphs. Of course we can also grant write access,
  522. use groups, etc.. But those are topics for another day.</p>
  523. <h2>Technical Footnote</h2>
  524. <p>Using ACLs with named graphs as described in this article
  525. requires some basic configuration. The ACL system is disabled by
  526. default. In order to enable it for the default application realm
  527. (another topic for another day) the following SPARQL statement
  528. needs to be executed as administrator:</p>
  529. <pre>sparql
  530. prefix oplacl: &lt;http://www.openlinksw.com/ontology/acl#&gt;
  531. with &lt;urn:virtuoso:val:config&gt;
  532. delete {
  533.  oplacl:DefaultRealm oplacl:hasDisabledAclScope oplacl:Query , oplacl:PrivateGraphs .
  534. }
  535. insert {
  536.  oplacl:DefaultRealm oplacl:hasEnabledAclScope oplacl:Query , oplacl:PrivateGraphs .
  537. };</pre>
  538. <p>This will enable ACLs for named graphs and SPARQL in general.
  539. Finally the LinkedIn account from the example requires generic
  540. SPARQL read permissions. The simplest approach is to just allow
  541. anyone to SPARQL read:</p>
  542. <pre>@prefix acl: &lt;http://www.w3.org/ns/auth/acl#&gt; .
  543. @prefix oplacl: &lt;http://www.openlinksw.com/ontology/acl#&gt; .
  544. &lt;#rule&gt; a acl:Authorization ;
  545.  rdfs:label "Allow Anyone to SPARQL Read" ;
  546.  acl:agentClass foaf:Agent ;
  547.  acl:accessTo &lt;urn:virtuoso:access:sparql&gt; ;
  548.  oplacl:hasAccessMode oplacl:Read ;
  549.  oplacl:hasScope oplacl:Query .</pre>
  550. <p>I will explain these technical concepts in more detail in
  551. another article.</p>
  552. </div>
  553. </div>]]></content:encoded>
  554.  <description>Disclaimer : Many of the features presented here are rather new and can not be found&amp;#160;in&amp;#160; the open-source version of Virtuoso. Last time we saw how to share files and folders stored in the Virtuoso DAV system . Today we will protect and share data stored in Virtuoso’s Triple Store – we will share RDF data. Virtuoso is actually a quadruple-store which means each triple lives in a named graph. In Virtuoso named graphs can be public or private (in reality it is a bit more complex than that but this view on things is sufficient for our purposes), public ...</description>
  555. </item>
  556. <item rdf:about="https://trueg.wordpress.com/2014/09/02/sharing-files-with-whomever-is-simple/">
  557.  <dc:creator>Sebastian Trueg</dc:creator>
  558.  <dc:source>Semantic Desktop by Sebastian Trueg</dc:source>
  559.  <dc:relation>http://trueg.wordpress.com/</dc:relation>
  560.  <planet:content xmlns="http://www.w3.org/1999/xhtml" rdf:parseType="Literal">
  561. <div>
  562. <p>Dropbox, Google Drive, OneDrive, Box.com – they all allow you to
  563. share files with others. But they all do it via the strange concept
  564. of public links. Anyone who has this link has access to the file.
  565. On first glance this might be easy enough but what if you want to
  566. revoke read access for just one of those people? What if you want
  567. to share a set of files with a whole group?</p>
  568. <p>I will not answer these questions per se. I will show an
  569. alternative based on <a href=
  570. "http://virtuoso.openlinksw.com">OpenLink Virtuoso</a>.</p>
  571. <p>Virtuoso has its own WebDAV file storage system built in. Thus,
  572. any instance of Virtuoso can store files and serve these files via
  573. the WebDAV API (and an <a title="Linked Data Platform" href=
  574. "http://www.w3.org/TR/ldp/">LDP</a> API for those interested) and
  575. an HTML UI. See below for a basic example:</p>
  576. <p><a href=
  577. "https://trueg.files.wordpress.com/2014/09/dav1.png"><img data-attachment-id="897"
  578. data-permalink=
  579. "https://trueg.wordpress.com/2014/09/02/sharing-files-with-whomever-is-simple/dav1/"
  580. data-orig-file="https://trueg.files.wordpress.com/2014/09/dav1.png"
  581. data-orig-size="1021,574" data-comments-opened="1" data-image-meta=
  582. "{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}"
  583. data-image-title="Virtuoso DAV Browser" data-image-description=""
  584. data-image-caption="" data-medium-file=
  585. "https://trueg.files.wordpress.com/2014/09/dav1.png?w=300"
  586. data-large-file=
  587. "https://trueg.files.wordpress.com/2014/09/dav1.png?w=676" class=
  588. "aligncenter size-medium wp-image-897" src=
  589. "https://trueg.files.wordpress.com/2014/09/dav1.png?w=300&amp;h=168"
  590. alt="Virtuoso DAV Browser" width="300" height="168" srcset=
  591. "https://trueg.files.wordpress.com/2014/09/dav1.png?w=300 300w, https://trueg.files.wordpress.com/2014/09/dav1.png?w=598 598w, https://trueg.files.wordpress.com/2014/09/dav1.png?w=150 150w"
  592. sizes="(max-width: 300px) 100vw, 300px" /></a></p>
  593. <p>This is just your typical file browser listing – nothing fancy.
  594. The fancy part lives under the hood in what we call VAL – the
  595. Virtuoso Authentication and Authorization Layer.</p>
  596. <p>We can edit the permissions of one file or folder and share it
  597. with anyone we like. And this is where it gets interesting: instead
  598. of sharing with an email address or a user account on the Virtuoso
  599. instance we can share with people using their identifiers from any
  600. of the supported services. This includes Facebook, Twitter,
  601. LinkedIn, WordPress, Yahoo, Mozilla Persona, and the list goes
  602. on.</p>
  603. <p>For this small demo I will share a file with my LinkedIn
  604. identity&#160;<em><a href="http://www.linkedin.com/in/trueg" rel=
  605. "nofollow">http://www.linkedin.com/in/trueg</a></em>. (Virtuoso/VAL
  606. identifier people via URIs, thus, it has schemes for all supported
  607. services. For a complete list see the <a href=
  608. "http://web.ods.openlinksw.com/odsdox/group__ods__module__user.html#ga74edeb21c990ffa4d8e554fd8dd13eff">
  609. Service ID Examples&#160;in the ODS API documentation</a>.)</p>
  610. <p><a href=
  611. "https://trueg.files.wordpress.com/2014/09/dav2.png"><img data-attachment-id="898"
  612. data-permalink=
  613. "https://trueg.wordpress.com/2014/09/02/sharing-files-with-whomever-is-simple/dav2/"
  614. data-orig-file="https://trueg.files.wordpress.com/2014/09/dav2.png"
  615. data-orig-size="1021,432" data-comments-opened="1" data-image-meta=
  616. "{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}"
  617. data-image-title="Virtuoso Share File" data-image-description=""
  618. data-image-caption="" data-medium-file=
  619. "https://trueg.files.wordpress.com/2014/09/dav2.png?w=300"
  620. data-large-file=
  621. "https://trueg.files.wordpress.com/2014/09/dav2.png?w=676" class=
  622. "aligncenter size-medium wp-image-898" src=
  623. "https://trueg.files.wordpress.com/2014/09/dav2.png?w=300&amp;h=126"
  624. alt="Virtuoso Share File" width="300" height="126" srcset=
  625. "https://trueg.files.wordpress.com/2014/09/dav2.png?w=298 298w, https://trueg.files.wordpress.com/2014/09/dav2.png?w=596 596w, https://trueg.files.wordpress.com/2014/09/dav2.png?w=150 150w"
  626. sizes="(max-width: 300px) 100vw, 300px" /></a></p>
  627. <p>Now when I logout and try to access the file in question I am
  628. presented with the authentication dialog from VAL:</p>
  629. <p><a href=
  630. "https://trueg.files.wordpress.com/2014/09/dav3.png"><img data-attachment-id="899"
  631. data-permalink=
  632. "https://trueg.wordpress.com/2014/09/02/sharing-files-with-whomever-is-simple/dav3/"
  633. data-orig-file="https://trueg.files.wordpress.com/2014/09/dav3.png"
  634. data-orig-size="1021,432" data-comments-opened="1" data-image-meta=
  635. "{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}"
  636. data-image-title="VAL Authentication Dialog"
  637. data-image-description="" data-image-caption="" data-medium-file=
  638. "https://trueg.files.wordpress.com/2014/09/dav3.png?w=300"
  639. data-large-file=
  640. "https://trueg.files.wordpress.com/2014/09/dav3.png?w=676" class=
  641. "aligncenter size-medium wp-image-899" src=
  642. "https://trueg.files.wordpress.com/2014/09/dav3.png?w=300&amp;h=126"
  643. alt="VAL Authentication Dialog" width="300" height="126" srcset=
  644. "https://trueg.files.wordpress.com/2014/09/dav3.png?w=298 298w, https://trueg.files.wordpress.com/2014/09/dav3.png?w=596 596w, https://trueg.files.wordpress.com/2014/09/dav3.png?w=150 150w"
  645. sizes="(max-width: 300px) 100vw, 300px" /></a></p>
  646. <p>This dialog allows me to authenticate using any of the supported
  647. authentication methods. In this case I will choose to authenticate
  648. via LinkedIn which will result in an OAuth handshake followed by
  649. the granted read access to the file:</p>
  650. <p><a href=
  651. "https://trueg.files.wordpress.com/2014/09/dav4.png"><img data-attachment-id="900"
  652. data-permalink=
  653. "https://trueg.wordpress.com/2014/09/02/sharing-files-with-whomever-is-simple/dav4/"
  654. data-orig-file="https://trueg.files.wordpress.com/2014/09/dav4.png"
  655. data-orig-size="1021,578" data-comments-opened="1" data-image-meta=
  656. "{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}"
  657. data-image-title="LinkedIn OAuth Handshake" data-image-description=
  658. "" data-image-caption="" data-medium-file=
  659. "https://trueg.files.wordpress.com/2014/09/dav4.png?w=300"
  660. data-large-file=
  661. "https://trueg.files.wordpress.com/2014/09/dav4.png?w=676" class=
  662. "aligncenter size-medium wp-image-900" src=
  663. "https://trueg.files.wordpress.com/2014/09/dav4.png?w=300&amp;h=169"
  664. alt="LinkedIn OAuth Handshake" width="300" height="169" srcset=
  665. "https://trueg.files.wordpress.com/2014/09/dav4.png?w=300 300w, https://trueg.files.wordpress.com/2014/09/dav4.png?w=597 597w, https://trueg.files.wordpress.com/2014/09/dav4.png?w=150 150w"
  666. sizes="(max-width: 300px) 100vw, 300px" /></a></p>
  667. <p>&#160;</p>
  668. <p><a href=
  669. "https://trueg.files.wordpress.com/2014/09/dav5.png"><img data-attachment-id="901"
  670. data-permalink=
  671. "https://trueg.wordpress.com/2014/09/02/sharing-files-with-whomever-is-simple/dav5/"
  672. data-orig-file="https://trueg.files.wordpress.com/2014/09/dav5.png"
  673. data-orig-size="1021,245" data-comments-opened="1" data-image-meta=
  674. "{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}"
  675. data-image-title="Access to file granted" data-image-description=""
  676. data-image-caption="" data-medium-file=
  677. "https://trueg.files.wordpress.com/2014/09/dav5.png?w=300"
  678. data-large-file=
  679. "https://trueg.files.wordpress.com/2014/09/dav5.png?w=676" class=
  680. "aligncenter size-medium wp-image-901" src=
  681. "https://trueg.files.wordpress.com/2014/09/dav5.png?w=300&amp;h=71"
  682. alt="Access to file granted" width="300" height="71" srcset=
  683. "https://trueg.files.wordpress.com/2014/09/dav5.png?w=300 300w, https://trueg.files.wordpress.com/2014/09/dav5.png?w=296 296w, https://trueg.files.wordpress.com/2014/09/dav5.png?w=592 592w, https://trueg.files.wordpress.com/2014/09/dav5.png?w=150 150w"
  684. sizes="(max-width: 300px) 100vw, 300px" /></a></p>
  685. <p>It is that simple. Of course these identifiers can also be used
  686. in groups, allowing to share files and folders with a set of people
  687. instead of just one individual.</p>
  688. <p>Next up:&#160;Sharing Named Graphs via VAL.</p>
  689. </div>
  690. </planet:content>
  691.  <dc:date rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2024-03-11T14:21:48.000000Z</dc:date>
  692.  <title>Sharing Files With Whomever Is Simple</title>
  693.  <link>https://trueg.wordpress.com/2014/09/02/sharing-files-with-whomever-is-simple/</link>
  694.  <content:encoded rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral"><![CDATA[
  695. <div xmlns='http://www.w3.org/1999/xhtml'>
  696. <div>
  697. <p>Dropbox, Google Drive, OneDrive, Box.com – they all allow you to
  698. share files with others. But they all do it via the strange concept
  699. of public links. Anyone who has this link has access to the file.
  700. On first glance this might be easy enough but what if you want to
  701. revoke read access for just one of those people? What if you want
  702. to share a set of files with a whole group?</p>
  703. <p>I will not answer these questions per se. I will show an
  704. alternative based on <a href=
  705. "http://virtuoso.openlinksw.com">OpenLink Virtuoso</a>.</p>
  706. <p>Virtuoso has its own WebDAV file storage system built in. Thus,
  707. any instance of Virtuoso can store files and serve these files via
  708. the WebDAV API (and an <a title="Linked Data Platform" href=
  709. "http://www.w3.org/TR/ldp/">LDP</a> API for those interested) and
  710. an HTML UI. See below for a basic example:</p>
  711. <p><a href=
  712. "https://trueg.files.wordpress.com/2014/09/dav1.png"><img data-attachment-id="897"
  713. data-permalink=
  714. "https://trueg.wordpress.com/2014/09/02/sharing-files-with-whomever-is-simple/dav1/"
  715. data-orig-file="https://trueg.files.wordpress.com/2014/09/dav1.png"
  716. data-orig-size="1021,574" data-comments-opened="1" data-image-meta=
  717. "{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}"
  718. data-image-title="Virtuoso DAV Browser" data-image-description=""
  719. data-image-caption="" data-medium-file=
  720. "https://trueg.files.wordpress.com/2014/09/dav1.png?w=300"
  721. data-large-file=
  722. "https://trueg.files.wordpress.com/2014/09/dav1.png?w=676" class=
  723. "aligncenter size-medium wp-image-897" src=
  724. "https://trueg.files.wordpress.com/2014/09/dav1.png?w=300&amp;h=168"
  725. alt="Virtuoso DAV Browser" width="300" height="168" srcset=
  726. "https://trueg.files.wordpress.com/2014/09/dav1.png?w=300 300w, https://trueg.files.wordpress.com/2014/09/dav1.png?w=598 598w, https://trueg.files.wordpress.com/2014/09/dav1.png?w=150 150w"
  727. sizes="(max-width: 300px) 100vw, 300px" /></a></p>
  728. <p>This is just your typical file browser listing – nothing fancy.
  729. The fancy part lives under the hood in what we call VAL – the
  730. Virtuoso Authentication and Authorization Layer.</p>
  731. <p>We can edit the permissions of one file or folder and share it
  732. with anyone we like. And this is where it gets interesting: instead
  733. of sharing with an email address or a user account on the Virtuoso
  734. instance we can share with people using their identifiers from any
  735. of the supported services. This includes Facebook, Twitter,
  736. LinkedIn, WordPress, Yahoo, Mozilla Persona, and the list goes
  737. on.</p>
  738. <p>For this small demo I will share a file with my LinkedIn
  739. identity&#160;<em><a href="http://www.linkedin.com/in/trueg" rel=
  740. "nofollow">http://www.linkedin.com/in/trueg</a></em>. (Virtuoso/VAL
  741. identifier people via URIs, thus, it has schemes for all supported
  742. services. For a complete list see the <a href=
  743. "http://web.ods.openlinksw.com/odsdox/group__ods__module__user.html#ga74edeb21c990ffa4d8e554fd8dd13eff">
  744. Service ID Examples&#160;in the ODS API documentation</a>.)</p>
  745. <p><a href=
  746. "https://trueg.files.wordpress.com/2014/09/dav2.png"><img data-attachment-id="898"
  747. data-permalink=
  748. "https://trueg.wordpress.com/2014/09/02/sharing-files-with-whomever-is-simple/dav2/"
  749. data-orig-file="https://trueg.files.wordpress.com/2014/09/dav2.png"
  750. data-orig-size="1021,432" data-comments-opened="1" data-image-meta=
  751. "{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}"
  752. data-image-title="Virtuoso Share File" data-image-description=""
  753. data-image-caption="" data-medium-file=
  754. "https://trueg.files.wordpress.com/2014/09/dav2.png?w=300"
  755. data-large-file=
  756. "https://trueg.files.wordpress.com/2014/09/dav2.png?w=676" class=
  757. "aligncenter size-medium wp-image-898" src=
  758. "https://trueg.files.wordpress.com/2014/09/dav2.png?w=300&amp;h=126"
  759. alt="Virtuoso Share File" width="300" height="126" srcset=
  760. "https://trueg.files.wordpress.com/2014/09/dav2.png?w=298 298w, https://trueg.files.wordpress.com/2014/09/dav2.png?w=596 596w, https://trueg.files.wordpress.com/2014/09/dav2.png?w=150 150w"
  761. sizes="(max-width: 300px) 100vw, 300px" /></a></p>
  762. <p>Now when I logout and try to access the file in question I am
  763. presented with the authentication dialog from VAL:</p>
  764. <p><a href=
  765. "https://trueg.files.wordpress.com/2014/09/dav3.png"><img data-attachment-id="899"
  766. data-permalink=
  767. "https://trueg.wordpress.com/2014/09/02/sharing-files-with-whomever-is-simple/dav3/"
  768. data-orig-file="https://trueg.files.wordpress.com/2014/09/dav3.png"
  769. data-orig-size="1021,432" data-comments-opened="1" data-image-meta=
  770. "{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}"
  771. data-image-title="VAL Authentication Dialog"
  772. data-image-description="" data-image-caption="" data-medium-file=
  773. "https://trueg.files.wordpress.com/2014/09/dav3.png?w=300"
  774. data-large-file=
  775. "https://trueg.files.wordpress.com/2014/09/dav3.png?w=676" class=
  776. "aligncenter size-medium wp-image-899" src=
  777. "https://trueg.files.wordpress.com/2014/09/dav3.png?w=300&amp;h=126"
  778. alt="VAL Authentication Dialog" width="300" height="126" srcset=
  779. "https://trueg.files.wordpress.com/2014/09/dav3.png?w=298 298w, https://trueg.files.wordpress.com/2014/09/dav3.png?w=596 596w, https://trueg.files.wordpress.com/2014/09/dav3.png?w=150 150w"
  780. sizes="(max-width: 300px) 100vw, 300px" /></a></p>
  781. <p>This dialog allows me to authenticate using any of the supported
  782. authentication methods. In this case I will choose to authenticate
  783. via LinkedIn which will result in an OAuth handshake followed by
  784. the granted read access to the file:</p>
  785. <p><a href=
  786. "https://trueg.files.wordpress.com/2014/09/dav4.png"><img data-attachment-id="900"
  787. data-permalink=
  788. "https://trueg.wordpress.com/2014/09/02/sharing-files-with-whomever-is-simple/dav4/"
  789. data-orig-file="https://trueg.files.wordpress.com/2014/09/dav4.png"
  790. data-orig-size="1021,578" data-comments-opened="1" data-image-meta=
  791. "{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}"
  792. data-image-title="LinkedIn OAuth Handshake" data-image-description=
  793. "" data-image-caption="" data-medium-file=
  794. "https://trueg.files.wordpress.com/2014/09/dav4.png?w=300"
  795. data-large-file=
  796. "https://trueg.files.wordpress.com/2014/09/dav4.png?w=676" class=
  797. "aligncenter size-medium wp-image-900" src=
  798. "https://trueg.files.wordpress.com/2014/09/dav4.png?w=300&amp;h=169"
  799. alt="LinkedIn OAuth Handshake" width="300" height="169" srcset=
  800. "https://trueg.files.wordpress.com/2014/09/dav4.png?w=300 300w, https://trueg.files.wordpress.com/2014/09/dav4.png?w=597 597w, https://trueg.files.wordpress.com/2014/09/dav4.png?w=150 150w"
  801. sizes="(max-width: 300px) 100vw, 300px" /></a></p>
  802. <p>&#160;</p>
  803. <p><a href=
  804. "https://trueg.files.wordpress.com/2014/09/dav5.png"><img data-attachment-id="901"
  805. data-permalink=
  806. "https://trueg.wordpress.com/2014/09/02/sharing-files-with-whomever-is-simple/dav5/"
  807. data-orig-file="https://trueg.files.wordpress.com/2014/09/dav5.png"
  808. data-orig-size="1021,245" data-comments-opened="1" data-image-meta=
  809. "{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}"
  810. data-image-title="Access to file granted" data-image-description=""
  811. data-image-caption="" data-medium-file=
  812. "https://trueg.files.wordpress.com/2014/09/dav5.png?w=300"
  813. data-large-file=
  814. "https://trueg.files.wordpress.com/2014/09/dav5.png?w=676" class=
  815. "aligncenter size-medium wp-image-901" src=
  816. "https://trueg.files.wordpress.com/2014/09/dav5.png?w=300&amp;h=71"
  817. alt="Access to file granted" width="300" height="71" srcset=
  818. "https://trueg.files.wordpress.com/2014/09/dav5.png?w=300 300w, https://trueg.files.wordpress.com/2014/09/dav5.png?w=296 296w, https://trueg.files.wordpress.com/2014/09/dav5.png?w=592 592w, https://trueg.files.wordpress.com/2014/09/dav5.png?w=150 150w"
  819. sizes="(max-width: 300px) 100vw, 300px" /></a></p>
  820. <p>It is that simple. Of course these identifiers can also be used
  821. in groups, allowing to share files and folders with a set of people
  822. instead of just one individual.</p>
  823. <p>Next up:&#160;Sharing Named Graphs via VAL.</p>
  824. </div>
  825. </div>]]></content:encoded>
  826.  <description>Dropbox, Google Drive, OneDrive, Box.com – they all allow you to share files with others. But they all do it via the strange concept of public links. Anyone who has this link has access to the file. On first glance this might be easy enough but what if you want to revoke read access for just one of those people? What if you want to share a set of files with a whole group? I will not answer these questions per se. I will show an alternative based on OpenLink Virtuoso . Virtuoso has its own WebDAV file storage system ...</description>
  827. </item>
  828. <item rdf:about="https://trueg.wordpress.com/2012/09/28/digitally-sign-emails-with-your-x-509-certificate-in-evolution/">
  829.  <dc:creator>Sebastian Trueg</dc:creator>
  830.  <dc:source>Semantic Desktop by Sebastian Trueg</dc:source>
  831.  <dc:relation>http://trueg.wordpress.com/</dc:relation>
  832.  <planet:content xmlns="http://www.w3.org/1999/xhtml" rdf:parseType="Literal">
  833. <div>
  834. <p>Digitally signing Emails is always a good idea. People can
  835. verify that you actually sent the mail and they can encrypt emails
  836. in return. A while ago <a href=
  837. "https://plus.google.com/112399767740508618350/posts/7UFzrLZpxnm">Kingsley
  838. showed how to sign emails in Thunderbird</a>.I will now follow up
  839. with a short post on how to do the same in Evolution.</p>
  840. <p>The process begins with actually getting an X.509 certificate
  841. including an embedded <a href="http://webid.info/">WebID</a>. There
  842. are a few services out there that can help with this, most notably
  843. OpenLink’s own <a href=
  844. "http://id.myopenlink.net/certgen/">YouID</a> and <a href=
  845. "http://id.myopenlink.net/ods/">ODS.</a> The former allows you to
  846. create a new certificate based on existing social service accounts.
  847. The latter requires you to create an ODS account and then create a
  848. new certificate via <em>Profile edit</em> -&gt; <em>Security</em>
  849. -&gt; <em>Certificate Generator</em>. In any case make sure to use
  850. the same email address for the certificate that you will be using
  851. for email sending.</p>
  852. <p>The certificate will actually be created by the web browser,
  853. making sure that the private key is safe.</p>
  854. <p>If you are a Google Chrome user you can skip the next step since
  855. Evolution shares its key storage with Chrome (and several other
  856. applications). If you are a user of Firefox you need to perform one
  857. extra step: go to the Firefox preferences, into the advanced
  858. section, click the “Certificates” button, choose the previously
  859. created certificate, and export it to a .p12 file.</p>
  860. <p>Back in Evolution’s settings you can now import this file:</p>
  861. <p><a href=
  862. "https://trueg.files.wordpress.com/2012/09/evolution-import-cert.png">
  863. <img data-attachment-id="871" data-permalink=
  864. "https://trueg.wordpress.com/2012/09/28/digitally-sign-emails-with-your-x-509-certificate-in-evolution/evolution-import-cert/"
  865. data-orig-file=
  866. "https://trueg.files.wordpress.com/2012/09/evolution-import-cert.png"
  867. data-orig-size="856,741" data-comments-opened="1" data-image-meta=
  868. "{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}"
  869. data-image-title="evolution-import-cert" data-image-description=""
  870. data-image-caption="" data-medium-file=
  871. "https://trueg.files.wordpress.com/2012/09/evolution-import-cert.png?w=300"
  872. data-large-file=
  873. "https://trueg.files.wordpress.com/2012/09/evolution-import-cert.png?w=676"
  874. class="aligncenter size-medium wp-image-871" title=
  875. "evolution-import-cert" src=
  876. "https://trueg.files.wordpress.com/2012/09/evolution-import-cert.png?w=300&amp;h=259"
  877. alt="" width="300" height="259" srcset=
  878. "https://trueg.files.wordpress.com/2012/09/evolution-import-cert.png?w=300 300w, https://trueg.files.wordpress.com/2012/09/evolution-import-cert.png?w=598 598w, https://trueg.files.wordpress.com/2012/09/evolution-import-cert.png?w=150 150w"
  879. sizes="(max-width: 300px) 100vw, 300px" /></a>To actually sign
  880. emails with your shiny new certificate stay in the Evolution
  881. settings, choose to edit the <em>Mail Account</em> in question,
  882. select the certificate in the <em>Secure MIME (S/MIME)</em> section
  883. and check “<em>Digitally sign outgoing messages (by
  884. default)</em>“:</p>
  885. <p><a href=
  886. "https://trueg.files.wordpress.com/2012/09/evolution-sign.png"><img data-attachment-id="872"
  887. data-permalink=
  888. "https://trueg.wordpress.com/2012/09/28/digitally-sign-emails-with-your-x-509-certificate-in-evolution/evolution-sign/"
  889. data-orig-file=
  890. "https://trueg.files.wordpress.com/2012/09/evolution-sign.png"
  891. data-orig-size="646,641" data-comments-opened="1" data-image-meta=
  892. "{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}"
  893. data-image-title="evolution-sign" data-image-description=""
  894. data-image-caption="" data-medium-file=
  895. "https://trueg.files.wordpress.com/2012/09/evolution-sign.png?w=300"
  896. data-large-file=
  897. "https://trueg.files.wordpress.com/2012/09/evolution-sign.png?w=646"
  898. class="aligncenter size-medium wp-image-872" title="evolution-sign"
  899. src=
  900. "https://trueg.files.wordpress.com/2012/09/evolution-sign.png?w=300&amp;h=297"
  901. alt="" width="300" height="297" srcset=
  902. "https://trueg.files.wordpress.com/2012/09/evolution-sign.png?w=300 300w, https://trueg.files.wordpress.com/2012/09/evolution-sign.png?w=600 600w, https://trueg.files.wordpress.com/2012/09/evolution-sign.png?w=150 150w"
  903. sizes="(max-width: 300px) 100vw, 300px" /></a>The nice thing about
  904. Evolution here is that in contrast to Thunderbird there is no need
  905. to manually import the root certificate which was used to sign your
  906. certificate (in our case the one from OpenLink). Evolution will
  907. simply ask you to trust that certificate the first time you try to
  908. send a signed email:</p>
  909. <p><a href=
  910. "https://trueg.files.wordpress.com/2012/09/evolution-confirm-ssl-exception.png">
  911. <img data-attachment-id="873" data-permalink=
  912. "https://trueg.wordpress.com/2012/09/28/digitally-sign-emails-with-your-x-509-certificate-in-evolution/evolution-confirm-ssl-exception/"
  913. data-orig-file=
  914. "https://trueg.files.wordpress.com/2012/09/evolution-confirm-ssl-exception.png"
  915. data-orig-size="394,297" data-comments-opened="1" data-image-meta=
  916. "{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}"
  917. data-image-title="evolution-confirm-ssl-exception"
  918. data-image-description="" data-image-caption="" data-medium-file=
  919. "https://trueg.files.wordpress.com/2012/09/evolution-confirm-ssl-exception.png?w=300"
  920. data-large-file=
  921. "https://trueg.files.wordpress.com/2012/09/evolution-confirm-ssl-exception.png?w=394"
  922. class="aligncenter size-medium wp-image-873" title=
  923. "evolution-confirm-ssl-exception" src=
  924. "https://trueg.files.wordpress.com/2012/09/evolution-confirm-ssl-exception.png?w=300&amp;h=226"
  925. alt="" width="300" height="226" srcset=
  926. "https://trueg.files.wordpress.com/2012/09/evolution-confirm-ssl-exception.png?w=300 300w, https://trueg.files.wordpress.com/2012/09/evolution-confirm-ssl-exception.png?w=150 150w, https://trueg.files.wordpress.com/2012/09/evolution-confirm-ssl-exception.png 394w"
  927. sizes="(max-width: 300px) 100vw, 300px" /></a>That’s it. Email
  928. signing in Evolution is easy.</p>
  929. </div>
  930. </planet:content>
  931.  <dc:date rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2024-03-11T14:21:48.000000Z</dc:date>
  932.  <title>Digitally Sign Emails With Your X.509 Certificate in
  933. Evolution</title>
  934.  <link>https://trueg.wordpress.com/2012/09/28/digitally-sign-emails-with-your-x-509-certificate-in-evolution/</link>
  935.  <content:encoded rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral"><![CDATA[
  936. <div xmlns='http://www.w3.org/1999/xhtml'>
  937. <div>
  938. <p>Digitally signing Emails is always a good idea. People can
  939. verify that you actually sent the mail and they can encrypt emails
  940. in return. A while ago <a href=
  941. "https://plus.google.com/112399767740508618350/posts/7UFzrLZpxnm">Kingsley
  942. showed how to sign emails in Thunderbird</a>.I will now follow up
  943. with a short post on how to do the same in Evolution.</p>
  944. <p>The process begins with actually getting an X.509 certificate
  945. including an embedded <a href="http://webid.info/">WebID</a>. There
  946. are a few services out there that can help with this, most notably
  947. OpenLink’s own <a href=
  948. "http://id.myopenlink.net/certgen/">YouID</a> and <a href=
  949. "http://id.myopenlink.net/ods/">ODS.</a> The former allows you to
  950. create a new certificate based on existing social service accounts.
  951. The latter requires you to create an ODS account and then create a
  952. new certificate via <em>Profile edit</em> -&gt; <em>Security</em>
  953. -&gt; <em>Certificate Generator</em>. In any case make sure to use
  954. the same email address for the certificate that you will be using
  955. for email sending.</p>
  956. <p>The certificate will actually be created by the web browser,
  957. making sure that the private key is safe.</p>
  958. <p>If you are a Google Chrome user you can skip the next step since
  959. Evolution shares its key storage with Chrome (and several other
  960. applications). If you are a user of Firefox you need to perform one
  961. extra step: go to the Firefox preferences, into the advanced
  962. section, click the “Certificates” button, choose the previously
  963. created certificate, and export it to a .p12 file.</p>
  964. <p>Back in Evolution’s settings you can now import this file:</p>
  965. <p><a href=
  966. "https://trueg.files.wordpress.com/2012/09/evolution-import-cert.png">
  967. <img data-attachment-id="871" data-permalink=
  968. "https://trueg.wordpress.com/2012/09/28/digitally-sign-emails-with-your-x-509-certificate-in-evolution/evolution-import-cert/"
  969. data-orig-file=
  970. "https://trueg.files.wordpress.com/2012/09/evolution-import-cert.png"
  971. data-orig-size="856,741" data-comments-opened="1" data-image-meta=
  972. "{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}"
  973. data-image-title="evolution-import-cert" data-image-description=""
  974. data-image-caption="" data-medium-file=
  975. "https://trueg.files.wordpress.com/2012/09/evolution-import-cert.png?w=300"
  976. data-large-file=
  977. "https://trueg.files.wordpress.com/2012/09/evolution-import-cert.png?w=676"
  978. class="aligncenter size-medium wp-image-871" title=
  979. "evolution-import-cert" src=
  980. "https://trueg.files.wordpress.com/2012/09/evolution-import-cert.png?w=300&amp;h=259"
  981. alt="" width="300" height="259" srcset=
  982. "https://trueg.files.wordpress.com/2012/09/evolution-import-cert.png?w=300 300w, https://trueg.files.wordpress.com/2012/09/evolution-import-cert.png?w=598 598w, https://trueg.files.wordpress.com/2012/09/evolution-import-cert.png?w=150 150w"
  983. sizes="(max-width: 300px) 100vw, 300px" /></a>To actually sign
  984. emails with your shiny new certificate stay in the Evolution
  985. settings, choose to edit the <em>Mail Account</em> in question,
  986. select the certificate in the <em>Secure MIME (S/MIME)</em> section
  987. and check “<em>Digitally sign outgoing messages (by
  988. default)</em>“:</p>
  989. <p><a href=
  990. "https://trueg.files.wordpress.com/2012/09/evolution-sign.png"><img data-attachment-id="872"
  991. data-permalink=
  992. "https://trueg.wordpress.com/2012/09/28/digitally-sign-emails-with-your-x-509-certificate-in-evolution/evolution-sign/"
  993. data-orig-file=
  994. "https://trueg.files.wordpress.com/2012/09/evolution-sign.png"
  995. data-orig-size="646,641" data-comments-opened="1" data-image-meta=
  996. "{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}"
  997. data-image-title="evolution-sign" data-image-description=""
  998. data-image-caption="" data-medium-file=
  999. "https://trueg.files.wordpress.com/2012/09/evolution-sign.png?w=300"
  1000. data-large-file=
  1001. "https://trueg.files.wordpress.com/2012/09/evolution-sign.png?w=646"
  1002. class="aligncenter size-medium wp-image-872" title="evolution-sign"
  1003. src=
  1004. "https://trueg.files.wordpress.com/2012/09/evolution-sign.png?w=300&amp;h=297"
  1005. alt="" width="300" height="297" srcset=
  1006. "https://trueg.files.wordpress.com/2012/09/evolution-sign.png?w=300 300w, https://trueg.files.wordpress.com/2012/09/evolution-sign.png?w=600 600w, https://trueg.files.wordpress.com/2012/09/evolution-sign.png?w=150 150w"
  1007. sizes="(max-width: 300px) 100vw, 300px" /></a>The nice thing about
  1008. Evolution here is that in contrast to Thunderbird there is no need
  1009. to manually import the root certificate which was used to sign your
  1010. certificate (in our case the one from OpenLink). Evolution will
  1011. simply ask you to trust that certificate the first time you try to
  1012. send a signed email:</p>
  1013. <p><a href=
  1014. "https://trueg.files.wordpress.com/2012/09/evolution-confirm-ssl-exception.png">
  1015. <img data-attachment-id="873" data-permalink=
  1016. "https://trueg.wordpress.com/2012/09/28/digitally-sign-emails-with-your-x-509-certificate-in-evolution/evolution-confirm-ssl-exception/"
  1017. data-orig-file=
  1018. "https://trueg.files.wordpress.com/2012/09/evolution-confirm-ssl-exception.png"
  1019. data-orig-size="394,297" data-comments-opened="1" data-image-meta=
  1020. "{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}"
  1021. data-image-title="evolution-confirm-ssl-exception"
  1022. data-image-description="" data-image-caption="" data-medium-file=
  1023. "https://trueg.files.wordpress.com/2012/09/evolution-confirm-ssl-exception.png?w=300"
  1024. data-large-file=
  1025. "https://trueg.files.wordpress.com/2012/09/evolution-confirm-ssl-exception.png?w=394"
  1026. class="aligncenter size-medium wp-image-873" title=
  1027. "evolution-confirm-ssl-exception" src=
  1028. "https://trueg.files.wordpress.com/2012/09/evolution-confirm-ssl-exception.png?w=300&amp;h=226"
  1029. alt="" width="300" height="226" srcset=
  1030. "https://trueg.files.wordpress.com/2012/09/evolution-confirm-ssl-exception.png?w=300 300w, https://trueg.files.wordpress.com/2012/09/evolution-confirm-ssl-exception.png?w=150 150w, https://trueg.files.wordpress.com/2012/09/evolution-confirm-ssl-exception.png 394w"
  1031. sizes="(max-width: 300px) 100vw, 300px" /></a>That’s it. Email
  1032. signing in Evolution is easy.</p>
  1033. </div>
  1034. </div>]]></content:encoded>
  1035.  <description>Digitally signing Emails is always a good idea. People can verify that you actually sent the mail and they can encrypt emails in return. A while ago Kingsley showed how to sign emails in Thunderbird .I will now follow up with a short post on how to do the same in Evolution. The process begins with actually getting an X.509 certificate including an embedded WebID . There are a few services out there that can help with this, most notably OpenLink’s own YouID and ODS. The former allows you to create a new certificate based on existing social service accounts. ...</description>
  1036. </item>
  1037. <item rdf:about="https://davidepalmisano.wordpress.com/2010/07/05/sameas4j-little-drops-of-water-make-the-mighty-ocean/">
  1038.  <dc:creator>Davide Palmisano</dc:creator>
  1039.  <dc:source>turn off the lights, please by Davide Palmisano</dc:source>
  1040.  <dc:relation>http://davidepalmisano.wordpress.com/</dc:relation>
  1041.  <planet:content xmlns="http://www.w3.org/1999/xhtml" rdf:parseType="Literal">
  1042. <div>
  1043. <div><a href=
  1044. "https://davidepalmisano.files.wordpress.com/2010/07/waterdrops2.jpg">
  1045. <img data-attachment-id="108" data-permalink=
  1046. "https://davidepalmisano.wordpress.com/2010/07/05/sameas4j-little-drops-of-water-make-the-mighty-ocean/waterdrops-3/"
  1047. data-orig-file=
  1048. "https://davidepalmisano.files.wordpress.com/2010/07/waterdrops2.jpg"
  1049. data-orig-size="1024,681" data-comments-opened="1" data-image-meta=
  1050. "{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;Colon of water, droplets and ripples, impact of a single droplet falling onto water surface&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;Tomas Sobek - http:\/\/tomassobekphotography.co.nz\/&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}"
  1051. data-image-title="waterdrops" data-image-description=
  1052. "&lt;p&gt;Colon of water, droplets and ripples, impact of a single droplet falling onto water surface&lt;/p&gt;"
  1053. data-image-caption="" data-medium-file=
  1054. "https://davidepalmisano.files.wordpress.com/2010/07/waterdrops2.jpg?w=300"
  1055. data-large-file=
  1056. "https://davidepalmisano.files.wordpress.com/2010/07/waterdrops2.jpg?w=450"
  1057. class="alignleft size-medium wp-image-108" title="waterdrops" src=
  1058. "https://davidepalmisano.files.wordpress.com/2010/07/waterdrops2.jpg?w=300&amp;h=199"
  1059. alt="" srcset=
  1060. "https://davidepalmisano.files.wordpress.com/2010/07/waterdrops2.jpg?w=300 300w, https://davidepalmisano.files.wordpress.com/2010/07/waterdrops2.jpg?w=240 240w, https://davidepalmisano.files.wordpress.com/2010/07/waterdrops2.jpg?w=478 478w, https://davidepalmisano.files.wordpress.com/2010/07/waterdrops2.jpg?w=150 150w"
  1061. sizes="(max-width: 240px) 100vw, 240px" /></a>Few days ago <a href=
  1062. "http://twitter.com/milstan" target="_blank">Milan Stankovich</a>
  1063. contacted the <a href="http://sindice.com" target=
  1064. "_blank">Sindice</a> crew informing us that he wrote a simply Java
  1065. library to interact with the public Sindice HTTP APIs. We always
  1066. <a href="http://twitter.com/mhausenblas/status/17403270299" target=
  1067. "_blank">appreciate</a> such kind of community efforts lead to
  1068. collaboratively make Sindice a better place on the Web. Agreeing
  1069. with Milan, we decided to put some efforts on his initial work to
  1070. make such library the official open source tool for Java
  1071. programmers.<span id="more-104"></span></div>
  1072. <div id="_mcePaste">That reminded me that, few months ago, I did
  1073. for <a href="http://sameas.org" target="_blank">sameas.org</a> the
  1074. same thing Milan did for us. But (ashamed) I never informed those
  1075. guys about what I did.</div>
  1076. <div id="_mcePaste"><a href="http://sameas.org" target=
  1077. "_blank">Sameas.org</a> is a great and extremely useful tool on the
  1078. Web that makes concretely possible to interlink different Linked
  1079. data clouds. Simple to use (both for humans via HTML and for
  1080. machines with a simple HTTP/JSON API) and extremely reactive, it
  1081. allows to get all the <a href=
  1082. "http://www.w3.org/2002/07/owl#sameAs" target=
  1083. "_blank">owl:sameAs</a> object for a given URI. And, moreover, it’s
  1084. based on Sindice.com.</div>
  1085. <div><!--more--></div>
  1086. <div id="_mcePaste" style="text-align:center;"><em>Do you want to
  1087. know the identifier of <a href="http://dbpedia.org/resource/Rome"
  1088. target="_blank">http://dbpedia.org/resource/Rome</a> in <a href=
  1089. "//www.freebase.com/" target="_blank">Freebase</a> or <a href=
  1090. "http://en.wikipedia.org/wiki/YAGO_(database)" target=
  1091. "_blank">Yago</a>? Just ask it to Sameas.org.</em></div>
  1092. <div style="text-align:center;"><em><br /></em></div>
  1093. <div id="_mcePaste">So, after some months I just refined a couple
  1094. of things, added some javadocs, set up a Maven repository and made
  1095. <a href="http://code.google.com/p/asmx-sameas4j/" target=
  1096. "_blank">SameAs4j</a> publicly available (MIT licensed) to everyone
  1097. on Google Code.</div>
  1098. <div><!--more--></div>
  1099. <div id="_mcePaste" style="text-align:center;"><em>It’s a simple
  1100. but reliable tiny set of Java classes that allows you to interact
  1101. with sameas.org programatically in your Java Semantic Web
  1102. applications.</em></div>
  1103. <div style="text-align:center;"><em><br /></em></div>
  1104. <div id="_mcePaste">Back to the beginning: every pieces of open
  1105. source software is like a little drop of water which makes the
  1106. mighty ocean, so please submit any issue or patch if
  1107. interested.</div>
  1108. </div>
  1109. </planet:content>
  1110.  <dc:date rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2024-03-11T14:10:06.000000Z</dc:date>
  1111.  <title>SameAs4J: little drops of water make the mighty
  1112. ocean</title>
  1113.  <link>https://davidepalmisano.wordpress.com/2010/07/05/sameas4j-little-drops-of-water-make-the-mighty-ocean/</link>
  1114.  <content:encoded rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral"><![CDATA[
  1115. <div xmlns='http://www.w3.org/1999/xhtml'>
  1116. <div>
  1117. <div><a href=
  1118. "https://davidepalmisano.files.wordpress.com/2010/07/waterdrops2.jpg">
  1119. <img data-attachment-id="108" data-permalink=
  1120. "https://davidepalmisano.wordpress.com/2010/07/05/sameas4j-little-drops-of-water-make-the-mighty-ocean/waterdrops-3/"
  1121. data-orig-file=
  1122. "https://davidepalmisano.files.wordpress.com/2010/07/waterdrops2.jpg"
  1123. data-orig-size="1024,681" data-comments-opened="1" data-image-meta=
  1124. "{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;Colon of water, droplets and ripples, impact of a single droplet falling onto water surface&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;Tomas Sobek - http:\/\/tomassobekphotography.co.nz\/&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}"
  1125. data-image-title="waterdrops" data-image-description=
  1126. "&lt;p&gt;Colon of water, droplets and ripples, impact of a single droplet falling onto water surface&lt;/p&gt;"
  1127. data-image-caption="" data-medium-file=
  1128. "https://davidepalmisano.files.wordpress.com/2010/07/waterdrops2.jpg?w=300"
  1129. data-large-file=
  1130. "https://davidepalmisano.files.wordpress.com/2010/07/waterdrops2.jpg?w=450"
  1131. class="alignleft size-medium wp-image-108" title="waterdrops" src=
  1132. "https://davidepalmisano.files.wordpress.com/2010/07/waterdrops2.jpg?w=300&amp;h=199"
  1133. alt="" srcset=
  1134. "https://davidepalmisano.files.wordpress.com/2010/07/waterdrops2.jpg?w=300 300w, https://davidepalmisano.files.wordpress.com/2010/07/waterdrops2.jpg?w=240 240w, https://davidepalmisano.files.wordpress.com/2010/07/waterdrops2.jpg?w=478 478w, https://davidepalmisano.files.wordpress.com/2010/07/waterdrops2.jpg?w=150 150w"
  1135. sizes="(max-width: 240px) 100vw, 240px" /></a>Few days ago <a href=
  1136. "http://twitter.com/milstan" target="_blank">Milan Stankovich</a>
  1137. contacted the <a href="http://sindice.com" target=
  1138. "_blank">Sindice</a> crew informing us that he wrote a simply Java
  1139. library to interact with the public Sindice HTTP APIs. We always
  1140. <a href="http://twitter.com/mhausenblas/status/17403270299" target=
  1141. "_blank">appreciate</a> such kind of community efforts lead to
  1142. collaboratively make Sindice a better place on the Web. Agreeing
  1143. with Milan, we decided to put some efforts on his initial work to
  1144. make such library the official open source tool for Java
  1145. programmers.<span id="more-104"></span></div>
  1146. <div id="_mcePaste">That reminded me that, few months ago, I did
  1147. for <a href="http://sameas.org" target="_blank">sameas.org</a> the
  1148. same thing Milan did for us. But (ashamed) I never informed those
  1149. guys about what I did.</div>
  1150. <div id="_mcePaste"><a href="http://sameas.org" target=
  1151. "_blank">Sameas.org</a> is a great and extremely useful tool on the
  1152. Web that makes concretely possible to interlink different Linked
  1153. data clouds. Simple to use (both for humans via HTML and for
  1154. machines with a simple HTTP/JSON API) and extremely reactive, it
  1155. allows to get all the <a href=
  1156. "http://www.w3.org/2002/07/owl#sameAs" target=
  1157. "_blank">owl:sameAs</a> object for a given URI. And, moreover, it’s
  1158. based on Sindice.com.</div>
  1159. <div><!--more--></div>
  1160. <div id="_mcePaste" style="text-align:center;"><em>Do you want to
  1161. know the identifier of <a href="http://dbpedia.org/resource/Rome"
  1162. target="_blank">http://dbpedia.org/resource/Rome</a> in <a href=
  1163. "//www.freebase.com/" target="_blank">Freebase</a> or <a href=
  1164. "http://en.wikipedia.org/wiki/YAGO_(database)" target=
  1165. "_blank">Yago</a>? Just ask it to Sameas.org.</em></div>
  1166. <div style="text-align:center;"><em><br /></em></div>
  1167. <div id="_mcePaste">So, after some months I just refined a couple
  1168. of things, added some javadocs, set up a Maven repository and made
  1169. <a href="http://code.google.com/p/asmx-sameas4j/" target=
  1170. "_blank">SameAs4j</a> publicly available (MIT licensed) to everyone
  1171. on Google Code.</div>
  1172. <div><!--more--></div>
  1173. <div id="_mcePaste" style="text-align:center;"><em>It’s a simple
  1174. but reliable tiny set of Java classes that allows you to interact
  1175. with sameas.org programatically in your Java Semantic Web
  1176. applications.</em></div>
  1177. <div style="text-align:center;"><em><br /></em></div>
  1178. <div id="_mcePaste">Back to the beginning: every pieces of open
  1179. source software is like a little drop of water which makes the
  1180. mighty ocean, so please submit any issue or patch if
  1181. interested.</div>
  1182. </div>
  1183. </div>]]></content:encoded>
  1184.  <description>Few days ago Milan Stankovich contacted the Sindice crew informing us that he wrote a simply Java library to interact with the public Sindice HTTP APIs. We always appreciate such kind of community efforts lead to collaboratively make Sindice a better place on the Web. Agreeing with Milan, we decided to put some efforts on his initial work to make such library the official open source tool for Java programmers. That reminded me that, few months ago, I did for sameas.org the same thing Milan did for us. But (ashamed) I never informed those guys about what I did. Sameas.org ...</description>
  1185. </item>
  1186. <item rdf:about="https://davidepalmisano.wordpress.com/2010/02/20/fbk-any23-and-my-involvement-in-sindice-com/">
  1187.  <dc:creator>Davide Palmisano</dc:creator>
  1188.  <dc:source>turn off the lights, please by Davide Palmisano</dc:source>
  1189.  <dc:relation>http://davidepalmisano.wordpress.com/</dc:relation>
  1190.  <planet:content xmlns="http://www.w3.org/1999/xhtml" rdf:parseType="Literal">
  1191. <div>
  1192. <p><a href=
  1193. "https://davidepalmisano.files.wordpress.com/2010/02/fbk_reassembled_logo.png">
  1194. <img data-attachment-id="96" data-permalink=
  1195. "https://davidepalmisano.wordpress.com/2010/02/20/fbk-any23-and-my-involvement-in-sindice-com/fbk_reassembled_logo/"
  1196. data-orig-file=
  1197. "https://davidepalmisano.files.wordpress.com/2010/02/fbk_reassembled_logo.png"
  1198. data-orig-size="670,822" data-comments-opened="1" data-image-meta=
  1199. "{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}"
  1200. data-image-title="FBK – Research in your heart"
  1201. data-image-description="" data-image-caption="" data-medium-file=
  1202. "https://davidepalmisano.files.wordpress.com/2010/02/fbk_reassembled_logo.png?w=245"
  1203. data-large-file=
  1204. "https://davidepalmisano.files.wordpress.com/2010/02/fbk_reassembled_logo.png?w=450"
  1205. class="alignleft size-medium wp-image-96" title=
  1206. "FBK - Research in your heart" src=
  1207. "https://davidepalmisano.files.wordpress.com/2010/02/fbk_reassembled_logo.png?w=245&amp;h=300"
  1208. alt="" srcset=
  1209. "https://davidepalmisano.files.wordpress.com/2010/02/fbk_reassembled_logo.png?w=244 244w, https://davidepalmisano.files.wordpress.com/2010/02/fbk_reassembled_logo.png?w=488 488w, https://davidepalmisano.files.wordpress.com/2010/02/fbk_reassembled_logo.png?w=122 122w"
  1210. sizes="(max-width: 244px) 100vw, 244px" /></a>After almost two
  1211. years spent working at Asemantics, I left it to join the <a href=
  1212. "http://fbk.eu" target="_blank">Fondazione Bruno Kessler (FBK)</a>,
  1213. a quite large research institute based in <a href=
  1214. "http://maps.google.com/maps?client=safari&amp;rls=en&amp;q=Trento&amp;oe=UTF-8&amp;um=1&amp;ie=UTF-8&amp;hq=&amp;hnear=Trento,+Italy&amp;ei=GxWAS7izOpDz_AaJv53zBg&amp;sa=X&amp;oi=geocode_result&amp;ct=image&amp;resnum=1&amp;ved=0CA0Q8gEwAA">
  1215. Trento</a>.</p>
  1216. <p>These last two years have been amazing: I met very skilled and
  1217. enthusiastic people working with them on a broad set of different
  1218. technologies. Every day spent there has been an opportunity for me
  1219. to learn something new from them, and at the very end they are now
  1220. very good friends more than colleagues. Now Asemantics is part of
  1221. the bigger <a href=
  1222. "http://www.pro-netics.com/site/display/site/Home" target=
  1223. "_blank">Pro-netics Group</a>.</p>
  1224. <p>Moved from Rome, I decided to follow <a href="http://g1o.net/"
  1225. target="_blank">Giovanni Tummarello</a> and <a href=
  1226. "http://twitter.com/micmos" target="_blank">Michele Mostarda</a> to
  1227. <strong>la</strong><strong>unch from scratch a new research unit at
  1228. FBK called</strong> <a href="http://wed.fbk.eu/en/home" target=
  1229. "_blank"><strong>“Web of Data”</strong></a>. FBK is a
  1230. well-established organization with several units acting on a
  1231. plethora of different research fields. Every day there is the
  1232. opportunity to join workshops and other kind of events.</p>
  1233. <p>Just to give you an idea of how the things work here, in the
  1234. April 2009 <a href="http://www.davidorban.com/en/" target=
  1235. "_blank">David Orban</a> gave a talk here on <a href=
  1236. "http://www.oskarnrk.net/2009/04/david-orban-alla-fondazione-bruno-kessler-the-open-internet-of-things/?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed%3A+oskarnrk+%28Oskar+NRK%29"
  1237. target="_blank">“The Open Internet of Things”</a> attended by a
  1238. large number of researchers and students. Aside FBK, <strong>in
  1239. Trento there is a quite active community hanging out around the
  1240. Semantic Web.</strong></p>
  1241. <p><em>“<a href="http://www.expertsystem.net/news.asp?idd=1475"
  1242. target="_blank">The Semantic Valley”</a>, that’s how they call this
  1243. euphoric movement around these technologies.</em></p>
  1244. <p>Back to me, the new “Web of Data” unit has joined the <a href=
  1245. "http://sindice.com" target="_blank">Sindice.com</a> army and
  1246. <strong>the last minute release of</strong> <a href=
  1247. "http://developers.any23.org" target=
  1248. "_blank"><strong>Any23</strong></a> <strong>0.2 is only the first
  1249. outcome of this joint effort on the Semantic Web Index
  1250. between</strong> <a href="http://deri.ie" target=
  1251. "_blank"><strong>DERI</strong></a> <strong>and FBK</strong>.</p>
  1252. <p>In particularly, the <strong>Any23</strong> 0.2 release has been
  1253. my first task here. <strong>It’s library, a service, an RDF
  1254. distiller</strong>. It’s used on board the Sindice ingestion
  1255. pipeline, it’s publicly available here and yesterday I spent a
  1256. couple of minutes to write this simple bookmarklet:</p>
  1257. <blockquote>
  1258. <p style="text-align:center;">javascript:window.open(‘<a href=
  1259. "http://any23.org/best/%E2%80%99%20+%20window.location" rel=
  1260. "nofollow">http://any23.org/best/’%20+%20window.location</a>);</p>
  1261. </blockquote>
  1262. <p>Once on your browser, it returns a bunch of distilled RDF
  1263. triples using the <a href="http://any23.org" target="_blank">Any23
  1264. servlet</a> if pressed on a Web page.</p>
  1265. <p style="text-align:center;"><em>So, what’s next?</em></p>
  1266. <p>The Web of Data unit has just started. <strong>More things, from
  1267. the next release of Sindice.com to other projects currently in
  1268. inception, will see the light.</strong> I really hope to keep on
  1269. contributing on the concrete consolidation of the Semantic Web, the
  1270. Web of Data or Web3.0 or whatever we’d like to call it.</p>
  1271. </div>
  1272. </planet:content>
  1273.  <dc:date rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2024-03-11T14:10:06.000000Z</dc:date>
  1274.  <title>FBK, Any23 and my involvement in Sindice.com</title>
  1275.  <link>https://davidepalmisano.wordpress.com/2010/02/20/fbk-any23-and-my-involvement-in-sindice-com/</link>
  1276.  <content:encoded rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral"><![CDATA[
  1277. <div xmlns='http://www.w3.org/1999/xhtml'>
  1278. <div>
  1279. <p><a href=
  1280. "https://davidepalmisano.files.wordpress.com/2010/02/fbk_reassembled_logo.png">
  1281. <img data-attachment-id="96" data-permalink=
  1282. "https://davidepalmisano.wordpress.com/2010/02/20/fbk-any23-and-my-involvement-in-sindice-com/fbk_reassembled_logo/"
  1283. data-orig-file=
  1284. "https://davidepalmisano.files.wordpress.com/2010/02/fbk_reassembled_logo.png"
  1285. data-orig-size="670,822" data-comments-opened="1" data-image-meta=
  1286. "{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}"
  1287. data-image-title="FBK – Research in your heart"
  1288. data-image-description="" data-image-caption="" data-medium-file=
  1289. "https://davidepalmisano.files.wordpress.com/2010/02/fbk_reassembled_logo.png?w=245"
  1290. data-large-file=
  1291. "https://davidepalmisano.files.wordpress.com/2010/02/fbk_reassembled_logo.png?w=450"
  1292. class="alignleft size-medium wp-image-96" title=
  1293. "FBK - Research in your heart" src=
  1294. "https://davidepalmisano.files.wordpress.com/2010/02/fbk_reassembled_logo.png?w=245&amp;h=300"
  1295. alt="" srcset=
  1296. "https://davidepalmisano.files.wordpress.com/2010/02/fbk_reassembled_logo.png?w=244 244w, https://davidepalmisano.files.wordpress.com/2010/02/fbk_reassembled_logo.png?w=488 488w, https://davidepalmisano.files.wordpress.com/2010/02/fbk_reassembled_logo.png?w=122 122w"
  1297. sizes="(max-width: 244px) 100vw, 244px" /></a>After almost two
  1298. years spent working at Asemantics, I left it to join the <a href=
  1299. "http://fbk.eu" target="_blank">Fondazione Bruno Kessler (FBK)</a>,
  1300. a quite large research institute based in <a href=
  1301. "http://maps.google.com/maps?client=safari&amp;rls=en&amp;q=Trento&amp;oe=UTF-8&amp;um=1&amp;ie=UTF-8&amp;hq=&amp;hnear=Trento,+Italy&amp;ei=GxWAS7izOpDz_AaJv53zBg&amp;sa=X&amp;oi=geocode_result&amp;ct=image&amp;resnum=1&amp;ved=0CA0Q8gEwAA">
  1302. Trento</a>.</p>
  1303. <p>These last two years have been amazing: I met very skilled and
  1304. enthusiastic people working with them on a broad set of different
  1305. technologies. Every day spent there has been an opportunity for me
  1306. to learn something new from them, and at the very end they are now
  1307. very good friends more than colleagues. Now Asemantics is part of
  1308. the bigger <a href=
  1309. "http://www.pro-netics.com/site/display/site/Home" target=
  1310. "_blank">Pro-netics Group</a>.</p>
  1311. <p>Moved from Rome, I decided to follow <a href="http://g1o.net/"
  1312. target="_blank">Giovanni Tummarello</a> and <a href=
  1313. "http://twitter.com/micmos" target="_blank">Michele Mostarda</a> to
  1314. <strong>la</strong><strong>unch from scratch a new research unit at
  1315. FBK called</strong> <a href="http://wed.fbk.eu/en/home" target=
  1316. "_blank"><strong>“Web of Data”</strong></a>. FBK is a
  1317. well-established organization with several units acting on a
  1318. plethora of different research fields. Every day there is the
  1319. opportunity to join workshops and other kind of events.</p>
  1320. <p>Just to give you an idea of how the things work here, in the
  1321. April 2009 <a href="http://www.davidorban.com/en/" target=
  1322. "_blank">David Orban</a> gave a talk here on <a href=
  1323. "http://www.oskarnrk.net/2009/04/david-orban-alla-fondazione-bruno-kessler-the-open-internet-of-things/?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed%3A+oskarnrk+%28Oskar+NRK%29"
  1324. target="_blank">“The Open Internet of Things”</a> attended by a
  1325. large number of researchers and students. Aside FBK, <strong>in
  1326. Trento there is a quite active community hanging out around the
  1327. Semantic Web.</strong></p>
  1328. <p><em>“<a href="http://www.expertsystem.net/news.asp?idd=1475"
  1329. target="_blank">The Semantic Valley”</a>, that’s how they call this
  1330. euphoric movement around these technologies.</em></p>
  1331. <p>Back to me, the new “Web of Data” unit has joined the <a href=
  1332. "http://sindice.com" target="_blank">Sindice.com</a> army and
  1333. <strong>the last minute release of</strong> <a href=
  1334. "http://developers.any23.org" target=
  1335. "_blank"><strong>Any23</strong></a> <strong>0.2 is only the first
  1336. outcome of this joint effort on the Semantic Web Index
  1337. between</strong> <a href="http://deri.ie" target=
  1338. "_blank"><strong>DERI</strong></a> <strong>and FBK</strong>.</p>
  1339. <p>In particularly, the <strong>Any23</strong> 0.2 release has been
  1340. my first task here. <strong>It’s library, a service, an RDF
  1341. distiller</strong>. It’s used on board the Sindice ingestion
  1342. pipeline, it’s publicly available here and yesterday I spent a
  1343. couple of minutes to write this simple bookmarklet:</p>
  1344. <blockquote>
  1345. <p style="text-align:center;">javascript:window.open(‘<a href=
  1346. "http://any23.org/best/%E2%80%99%20+%20window.location" rel=
  1347. "nofollow">http://any23.org/best/’%20+%20window.location</a>);</p>
  1348. </blockquote>
  1349. <p>Once on your browser, it returns a bunch of distilled RDF
  1350. triples using the <a href="http://any23.org" target="_blank">Any23
  1351. servlet</a> if pressed on a Web page.</p>
  1352. <p style="text-align:center;"><em>So, what’s next?</em></p>
  1353. <p>The Web of Data unit has just started. <strong>More things, from
  1354. the next release of Sindice.com to other projects currently in
  1355. inception, will see the light.</strong> I really hope to keep on
  1356. contributing on the concrete consolidation of the Semantic Web, the
  1357. Web of Data or Web3.0 or whatever we’d like to call it.</p>
  1358. </div>
  1359. </div>]]></content:encoded>
  1360.  <description>After almost two years spent working at Asemantics, I left it to join the Fondazione Bruno Kessler (FBK) , a quite large research institute based in Trento . These last two years have been amazing: I met very skilled and enthusiastic people working with them on a broad set of different technologies. Every day spent there has been an opportunity for me to learn something new from them, and at the very end they are now very good friends more than colleagues. Now Asemantics is part of the bigger Pro-netics Group . Moved from Rome, I decided to follow Giovanni ...</description>
  1361. </item>
  1362. <item rdf:about="https://davidepalmisano.wordpress.com/2009/12/26/cheap-linked-data-identifiers/">
  1363.  <dc:creator>Davide Palmisano</dc:creator>
  1364.  <dc:source>turn off the lights, please by Davide Palmisano</dc:source>
  1365.  <dc:relation>http://davidepalmisano.wordpress.com/</dc:relation>
  1366.  <planet:content xmlns="http://www.w3.org/1999/xhtml" rdf:parseType="Literal">
  1367. <div>
  1368. <p style="text-align:center;"><em>This is a (short) technical
  1369. post.</em></p>
  1370. <p>Everyday, <strong>I face the problem of getting some Linked Data
  1371. URIs that uniquely identify a “thing” starting from an ambiguous,
  1372. poor and flat keyword or description</strong>. One of the first
  1373. step dealing with the development of application that consumes
  1374. Linked Data is to provide a mechanism that allows to link our own
  1375. data sets to one (or more) LoD bubble. To gain a clear idea on why
  1376. identifiers matters I suggest you to read <a title="this" href=
  1377. "http://danbri.org/words/2009/10/09/452" target="_blank">this</a>
  1378. note from Dan Brickley: starting from some needs we encountered
  1379. within the <a title="NoTube" href="http://notube.tv" target=
  1380. "_blank">NoTube</a> project he clearly underlined the importance of
  1381. LoD identifiers. Even if the problem of uniquely identifying words
  1382. and terms falls in the biggest category usually known as <a title=
  1383. "term disambiguation" href=
  1384. "http://en.wikipedia.org/wiki/Word_sense_disambiguation" target=
  1385. "_blank">term disambiguation</a>, I’d like to clarify here, that
  1386. what I’m going to explain is a narrow restriction of the whole
  1387. problem.</p>
  1388. <p style="text-align:center;"><em>What I really need is a simple
  1389. mechanism that allows me to convert one specific type of
  1390. identifiers to a set of Linked Data URIs.</em></p>
  1391. <p style="text-align:left;">For example, I need something that
  1392. <strong>given a book ISBN number it returns me a set of URIs that
  1393. are referring to that book</strong>. Or, given the title of a movie
  1394. I expect back some URIs (from DBpedia or LinkedMDB or whatever)
  1395. identifying and describing it in a unique way.</p>
  1396. <p style="text-align:center;"><em>Isn’t SPARQL enough for you to do
  1397. that?</em></p>
  1398. <p style="text-align:left;">Yes, obviously the following SPARQL
  1399. query may be sufficient:</p>
  1400. <p style="text-align:left;">but what I need is something quicker
  1401. that I may invoke as an HTTP GET like:</p>
  1402. <p style="text-align:center;">
  1403. <code>http://localhost:8080/resolver?value=978-0-374-16527-7&amp;category=isbn</code></p>
  1404. <p style="text-align:left;">returning back to me a simple JSON:</p>
  1405. <p style="text-align:left;"><code>{&#160;"mappings": [<br />
  1406. "http://dbpedia.org/resource/Gomorrah_%28book%29"],<br />
  1407. "status": "ok"<br />
  1408. }</code></p>
  1409. <p style="text-align:left;">But <strong>the real issue here is the
  1410. code overhead necessary if you want to add other kind of
  1411. identifiers resolution</strong>. Let’s imagine, for instance, that
  1412. I already implemented this kind of service and I want to add
  1413. another resolution category. What I should do is to hard code
  1414. another SPARQL query, modify the code allowing to invoke it as a
  1415. service and redeploy it.</p>
  1416. <p style="text-align:center;"><em>I’m sure we could do
  1417. better</em>.</p>
  1418. <p style="text-align:left;">If we give a closer look at the above
  1419. SPARQL query, we easily figure out that the problem could be highly
  1420. generalized. In fact, often <strong>resolving such kind of
  1421. resolution means perform a SPARQL query asking for URIs that have a
  1422. certain value for a certain property</strong>. As dbprop:isbn for
  1423. the ISBN case.</p>
  1424. <p style="text-align:center;"><em>And this is what I did the last
  1425. two days: The NoTube Identity Resolver</em>.</p>
  1426. <p style="text-align:left;">A simple Web service (described in the
  1427. figure below) fully customizable by simply editing an XML
  1428. configuration file.</p>
  1429. <p style="text-align:left;"></p>
  1430. <div data-shortcode="caption" id="attachment_63" style=
  1431. "width: 460px" class="wp-caption aligncenter"><a href=
  1432. "https://davidepalmisano.files.wordpress.com/2009/12/arch1.png"><img aria-describedby="caption-attachment-63"
  1433. data-attachment-id="63" data-permalink=
  1434. "https://davidepalmisano.wordpress.com/2009/12/26/cheap-linked-data-identifiers/arch-2/"
  1435. data-orig-file=
  1436. "https://davidepalmisano.files.wordpress.com/2009/12/arch1.png"
  1437. data-orig-size="3856,2131" data-comments-opened="1"
  1438. data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}"
  1439. data-image-title="NoTube Identity Resolver architecture"
  1440. data-image-description=
  1441. "&lt;p&gt;NoTube Identity Resolver architecture&lt;/p&gt;"
  1442. data-image-caption=
  1443. "&lt;p&gt;NoTube Identity Resolver architecture&lt;/p&gt;"
  1444. data-medium-file=
  1445. "https://davidepalmisano.files.wordpress.com/2009/12/arch1.png?w=300"
  1446. data-large-file=
  1447. "https://davidepalmisano.files.wordpress.com/2009/12/arch1.png?w=450"
  1448. class="size-large wp-image-63" title=
  1449. "NoTube Identity Resolver architecture" src=
  1450. "https://davidepalmisano.files.wordpress.com/2009/12/arch1.png?w=450&amp;h=249"
  1451. alt="" srcset=
  1452. "https://davidepalmisano.files.wordpress.com/2009/12/arch1.png?w=430 430w, https://davidepalmisano.files.wordpress.com/2009/12/arch1.png?w=860 860w, https://davidepalmisano.files.wordpress.com/2009/12/arch1.png?w=150 150w, https://davidepalmisano.files.wordpress.com/2009/12/arch1.png?w=300 300w, https://davidepalmisano.files.wordpress.com/2009/12/arch1.png?w=768 768w"
  1453. sizes="(max-width: 430px) 100vw, 430px" /></a>
  1454. <p id="caption-attachment-63" class="wp-caption-text">NoTube
  1455. Identity Resolver architecture</p>
  1456. </div>
  1457. <p style="text-align:left;">The <em>resolvers.xml</em> file allows
  1458. you to provide a simple description of the resolution policy that
  1459. will be accessible with a simple HTTP GET call.</p>
  1460. <p style="text-align:left;">Back to the ISBN example, the following
  1461. piece of XML is enough to describe the resolver:</p>
  1462. <p style="text-align:left;"><code>&lt;resolver id=”2″
  1463. type=”normal”&gt;<br />
  1464. &lt;category&gt;isbn&lt;/category&gt;<br />
  1465. &lt;endpoint&gt;http://dbpedia.org/sparql&lt;/endpoint&gt;<br />
  1466. &lt;lookup&gt;dbpedia-owl:isbn&lt;/lookup&gt;<br />
  1467. &lt;sameas&gt;true&lt;/sameas&gt;<br />
  1468. &lt;matching&gt;LITERAL&lt;/matching&gt;<br />
  1469. &lt;/resolver&gt;</code></p>
  1470. <p style="text-align:left;">Where:</p>
  1471. <ul>
  1472. <li><strong>category</strong> is the value that have to be passed
  1473. as parameter in the HTTP GET call to invoke this resolver</li>
  1474. <li><strong>endpoint</strong> is the address of a SPARQL Endpoint
  1475. where make the resolution</li>
  1476. <li><strong>lookup</strong> is the name of the property intended to
  1477. be</li>
  1478. <li><strong>type</strong> (optional) the rdf:type of the resources
  1479. to be resolved</li>
  1480. <li><strong>sameas</strong> boolean value enabling or not the
  1481. calling of the SameAs.org service to gain equivalent URIs</li>
  1482. <li><strong>matching</strong> (allowing only <strong>URI</strong>
  1483. and <strong>LITERAL</strong> as value) this element describes the
  1484. type of the value to be resolved.</li>
  1485. </ul>
  1486. <p style="text-align:left;">Moreover, the NoTube Identity Resolver
  1487. gives you also the possibility to specify more complex resolution
  1488. policies through a&#160;SPARQL query as shown below:</p>
  1489. <p style="text-align:left;"><code>&lt;resolver id="3"
  1490. type="custom"&gt;<br />
  1491. &lt;category&gt;movie&lt;/category&gt;<br />
  1492. &lt;endpoint&gt;http://dbpedia.org/sparql&lt;/endpoint&gt;<br />
  1493. &lt;sparql&gt;&lt;![CDATA[SELECT DISTINCT ?subject<br />
  1494. WHERE { ?subject a &lt;http://dbpedia.org/ontology/Film&gt;.<br />
  1495. ?subject &lt;http://dbpedia.org/property/title&gt; ?title.<br />
  1496. FILTER (regex(?title, "#VALUE#")) }]]&gt;<br />
  1497. &lt;/sparql&gt;<br />
  1498. &lt;sameas&gt;true&lt;/sameas&gt;<br />
  1499. &lt;/resolver&gt;</code></p>
  1500. <p style="text-align:left;">In other words, every resolver
  1501. described in the <em>resolvers.xml</em> file allows you to enable
  1502. one kind of resolution mechanism without writing a line af Java
  1503. code.</p>
  1504. <p style="text-align:center;"><em>Do you want to try?</em></p>
  1505. <p style="text-align:left;">Just <a title="download" href=
  1506. "http://code.google.com/p/notube-collector/source/browse/trunk/prototypes/notube-identity-resolver/target/notube-identity-resolver.war"
  1507. target="_blank">download</a> the war package, get this <a href=
  1508. "http://code.google.com/p/notube-collector/source/browse/trunk/prototypes/notube-identity-resolver/src/test/resources/resolvers.xml"
  1509. target="_self">resolvers.xml</a> (or write your own), export the
  1510. <strong>RESOLVERS_XML_LOCATION</strong> environment variable
  1511. pointing to the folder where the <em>resolvers.xml</em> is located,
  1512. deploy the war on your Apache Tomcat application server, start the
  1513. application and try it out heading your browser to:</p>
  1514. <p style="text-align:center;">
  1515. <code>http://localhost:8080/notube-identity-resolver/resolver?value=978-0-374-16527-7&amp;category=isbn</code></p>
  1516. <p style="text-align:center;"><em>That’s all folks</em></p>
  1517. </div>
  1518. </planet:content>
  1519.  <dc:date rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2024-03-11T14:10:06.000000Z</dc:date>
  1520.  <title>Cheap Linked Data identifiers</title>
  1521.  <link>https://davidepalmisano.wordpress.com/2009/12/26/cheap-linked-data-identifiers/</link>
  1522.  <content:encoded rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral"><![CDATA[
  1523. <div xmlns='http://www.w3.org/1999/xhtml'>
  1524. <div>
  1525. <p style="text-align:center;"><em>This is a (short) technical
  1526. post.</em></p>
  1527. <p>Everyday, <strong>I face the problem of getting some Linked Data
  1528. URIs that uniquely identify a “thing” starting from an ambiguous,
  1529. poor and flat keyword or description</strong>. One of the first
  1530. step dealing with the development of application that consumes
  1531. Linked Data is to provide a mechanism that allows to link our own
  1532. data sets to one (or more) LoD bubble. To gain a clear idea on why
  1533. identifiers matters I suggest you to read <a title="this" href=
  1534. "http://danbri.org/words/2009/10/09/452" target="_blank">this</a>
  1535. note from Dan Brickley: starting from some needs we encountered
  1536. within the <a title="NoTube" href="http://notube.tv" target=
  1537. "_blank">NoTube</a> project he clearly underlined the importance of
  1538. LoD identifiers. Even if the problem of uniquely identifying words
  1539. and terms falls in the biggest category usually known as <a title=
  1540. "term disambiguation" href=
  1541. "http://en.wikipedia.org/wiki/Word_sense_disambiguation" target=
  1542. "_blank">term disambiguation</a>, I’d like to clarify here, that
  1543. what I’m going to explain is a narrow restriction of the whole
  1544. problem.</p>
  1545. <p style="text-align:center;"><em>What I really need is a simple
  1546. mechanism that allows me to convert one specific type of
  1547. identifiers to a set of Linked Data URIs.</em></p>
  1548. <p style="text-align:left;">For example, I need something that
  1549. <strong>given a book ISBN number it returns me a set of URIs that
  1550. are referring to that book</strong>. Or, given the title of a movie
  1551. I expect back some URIs (from DBpedia or LinkedMDB or whatever)
  1552. identifying and describing it in a unique way.</p>
  1553. <p style="text-align:center;"><em>Isn’t SPARQL enough for you to do
  1554. that?</em></p>
  1555. <p style="text-align:left;">Yes, obviously the following SPARQL
  1556. query may be sufficient:</p>
  1557. <p style="text-align:left;">but what I need is something quicker
  1558. that I may invoke as an HTTP GET like:</p>
  1559. <p style="text-align:center;">
  1560. <code>http://localhost:8080/resolver?value=978-0-374-16527-7&amp;category=isbn</code></p>
  1561. <p style="text-align:left;">returning back to me a simple JSON:</p>
  1562. <p style="text-align:left;"><code>{&#160;"mappings": [<br />
  1563. "http://dbpedia.org/resource/Gomorrah_%28book%29"],<br />
  1564. "status": "ok"<br />
  1565. }</code></p>
  1566. <p style="text-align:left;">But <strong>the real issue here is the
  1567. code overhead necessary if you want to add other kind of
  1568. identifiers resolution</strong>. Let’s imagine, for instance, that
  1569. I already implemented this kind of service and I want to add
  1570. another resolution category. What I should do is to hard code
  1571. another SPARQL query, modify the code allowing to invoke it as a
  1572. service and redeploy it.</p>
  1573. <p style="text-align:center;"><em>I’m sure we could do
  1574. better</em>.</p>
  1575. <p style="text-align:left;">If we give a closer look at the above
  1576. SPARQL query, we easily figure out that the problem could be highly
  1577. generalized. In fact, often <strong>resolving such kind of
  1578. resolution means perform a SPARQL query asking for URIs that have a
  1579. certain value for a certain property</strong>. As dbprop:isbn for
  1580. the ISBN case.</p>
  1581. <p style="text-align:center;"><em>And this is what I did the last
  1582. two days: The NoTube Identity Resolver</em>.</p>
  1583. <p style="text-align:left;">A simple Web service (described in the
  1584. figure below) fully customizable by simply editing an XML
  1585. configuration file.</p>
  1586. <p style="text-align:left;"></p>
  1587. <div data-shortcode="caption" id="attachment_63" style=
  1588. "width: 460px" class="wp-caption aligncenter"><a href=
  1589. "https://davidepalmisano.files.wordpress.com/2009/12/arch1.png"><img aria-describedby="caption-attachment-63"
  1590. data-attachment-id="63" data-permalink=
  1591. "https://davidepalmisano.wordpress.com/2009/12/26/cheap-linked-data-identifiers/arch-2/"
  1592. data-orig-file=
  1593. "https://davidepalmisano.files.wordpress.com/2009/12/arch1.png"
  1594. data-orig-size="3856,2131" data-comments-opened="1"
  1595. data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}"
  1596. data-image-title="NoTube Identity Resolver architecture"
  1597. data-image-description=
  1598. "&lt;p&gt;NoTube Identity Resolver architecture&lt;/p&gt;"
  1599. data-image-caption=
  1600. "&lt;p&gt;NoTube Identity Resolver architecture&lt;/p&gt;"
  1601. data-medium-file=
  1602. "https://davidepalmisano.files.wordpress.com/2009/12/arch1.png?w=300"
  1603. data-large-file=
  1604. "https://davidepalmisano.files.wordpress.com/2009/12/arch1.png?w=450"
  1605. class="size-large wp-image-63" title=
  1606. "NoTube Identity Resolver architecture" src=
  1607. "https://davidepalmisano.files.wordpress.com/2009/12/arch1.png?w=450&amp;h=249"
  1608. alt="" srcset=
  1609. "https://davidepalmisano.files.wordpress.com/2009/12/arch1.png?w=430 430w, https://davidepalmisano.files.wordpress.com/2009/12/arch1.png?w=860 860w, https://davidepalmisano.files.wordpress.com/2009/12/arch1.png?w=150 150w, https://davidepalmisano.files.wordpress.com/2009/12/arch1.png?w=300 300w, https://davidepalmisano.files.wordpress.com/2009/12/arch1.png?w=768 768w"
  1610. sizes="(max-width: 430px) 100vw, 430px" /></a>
  1611. <p id="caption-attachment-63" class="wp-caption-text">NoTube
  1612. Identity Resolver architecture</p>
  1613. </div>
  1614. <p style="text-align:left;">The <em>resolvers.xml</em> file allows
  1615. you to provide a simple description of the resolution policy that
  1616. will be accessible with a simple HTTP GET call.</p>
  1617. <p style="text-align:left;">Back to the ISBN example, the following
  1618. piece of XML is enough to describe the resolver:</p>
  1619. <p style="text-align:left;"><code>&lt;resolver id=”2″
  1620. type=”normal”&gt;<br />
  1621. &lt;category&gt;isbn&lt;/category&gt;<br />
  1622. &lt;endpoint&gt;http://dbpedia.org/sparql&lt;/endpoint&gt;<br />
  1623. &lt;lookup&gt;dbpedia-owl:isbn&lt;/lookup&gt;<br />
  1624. &lt;sameas&gt;true&lt;/sameas&gt;<br />
  1625. &lt;matching&gt;LITERAL&lt;/matching&gt;<br />
  1626. &lt;/resolver&gt;</code></p>
  1627. <p style="text-align:left;">Where:</p>
  1628. <ul>
  1629. <li><strong>category</strong> is the value that have to be passed
  1630. as parameter in the HTTP GET call to invoke this resolver</li>
  1631. <li><strong>endpoint</strong> is the address of a SPARQL Endpoint
  1632. where make the resolution</li>
  1633. <li><strong>lookup</strong> is the name of the property intended to
  1634. be</li>
  1635. <li><strong>type</strong> (optional) the rdf:type of the resources
  1636. to be resolved</li>
  1637. <li><strong>sameas</strong> boolean value enabling or not the
  1638. calling of the SameAs.org service to gain equivalent URIs</li>
  1639. <li><strong>matching</strong> (allowing only <strong>URI</strong>
  1640. and <strong>LITERAL</strong> as value) this element describes the
  1641. type of the value to be resolved.</li>
  1642. </ul>
  1643. <p style="text-align:left;">Moreover, the NoTube Identity Resolver
  1644. gives you also the possibility to specify more complex resolution
  1645. policies through a&#160;SPARQL query as shown below:</p>
  1646. <p style="text-align:left;"><code>&lt;resolver id="3"
  1647. type="custom"&gt;<br />
  1648. &lt;category&gt;movie&lt;/category&gt;<br />
  1649. &lt;endpoint&gt;http://dbpedia.org/sparql&lt;/endpoint&gt;<br />
  1650. &lt;sparql&gt;&lt;![CDATA[SELECT DISTINCT ?subject<br />
  1651. WHERE { ?subject a &lt;http://dbpedia.org/ontology/Film&gt;.<br />
  1652. ?subject &lt;http://dbpedia.org/property/title&gt; ?title.<br />
  1653. FILTER (regex(?title, "#VALUE#")) }]]&gt;<br />
  1654. &lt;/sparql&gt;<br />
  1655. &lt;sameas&gt;true&lt;/sameas&gt;<br />
  1656. &lt;/resolver&gt;</code></p>
  1657. <p style="text-align:left;">In other words, every resolver
  1658. described in the <em>resolvers.xml</em> file allows you to enable
  1659. one kind of resolution mechanism without writing a line af Java
  1660. code.</p>
  1661. <p style="text-align:center;"><em>Do you want to try?</em></p>
  1662. <p style="text-align:left;">Just <a title="download" href=
  1663. "http://code.google.com/p/notube-collector/source/browse/trunk/prototypes/notube-identity-resolver/target/notube-identity-resolver.war"
  1664. target="_blank">download</a> the war package, get this <a href=
  1665. "http://code.google.com/p/notube-collector/source/browse/trunk/prototypes/notube-identity-resolver/src/test/resources/resolvers.xml"
  1666. target="_self">resolvers.xml</a> (or write your own), export the
  1667. <strong>RESOLVERS_XML_LOCATION</strong> environment variable
  1668. pointing to the folder where the <em>resolvers.xml</em> is located,
  1669. deploy the war on your Apache Tomcat application server, start the
  1670. application and try it out heading your browser to:</p>
  1671. <p style="text-align:center;">
  1672. <code>http://localhost:8080/notube-identity-resolver/resolver?value=978-0-374-16527-7&amp;category=isbn</code></p>
  1673. <p style="text-align:center;"><em>That’s all folks</em></p>
  1674. </div>
  1675. </div>]]></content:encoded>
  1676.  <description>This is a (short) technical post. Everyday, I face the problem of getting some Linked Data URIs that uniquely identify a “thing” starting from an ambiguous, poor and flat keyword or description . One of the first step dealing with the development of application that consumes Linked Data is to provide a mechanism that allows to link our own data sets to one (or more) LoD bubble. To gain a clear idea on why identifiers matters I suggest you to read this note from Dan Brickley: starting from some needs we encountered within the NoTube project he clearly underlined the ...</description>
  1677. </item>
  1678. <item rdf:about="https://davidepalmisano.wordpress.com/2009/12/13/rww-2009-top-10-semantic-web-products-one-year-later/">
  1679.  <dc:creator>Davide Palmisano</dc:creator>
  1680.  <dc:source>turn off the lights, please by Davide Palmisano</dc:source>
  1681.  <dc:relation>http://davidepalmisano.wordpress.com/</dc:relation>
  1682.  <planet:content xmlns="http://www.w3.org/1999/xhtml" rdf:parseType="Literal">
  1683. <div>
  1684. <p><a href=
  1685. "https://davidepalmisano.files.wordpress.com/2009/12/logos.png"><img data-attachment-id="36"
  1686. data-permalink=
  1687. "https://davidepalmisano.wordpress.com/2009/12/13/rww-2009-top-10-semantic-web-products-one-year-later/logos/"
  1688. data-orig-file=
  1689. "https://davidepalmisano.files.wordpress.com/2009/12/logos.png"
  1690. data-orig-size="660,494" data-comments-opened="1" data-image-meta=
  1691. "{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}"
  1692. data-image-title="logos" data-image-description=""
  1693. data-image-caption="" data-medium-file=
  1694. "https://davidepalmisano.files.wordpress.com/2009/12/logos.png?w=300"
  1695. data-large-file=
  1696. "https://davidepalmisano.files.wordpress.com/2009/12/logos.png?w=450"
  1697. class="alignleft size-medium wp-image-36" title="logos" src=
  1698. "https://davidepalmisano.files.wordpress.com/2009/12/logos.png?w=300&amp;h=224"
  1699. alt="" srcset=
  1700. "https://davidepalmisano.files.wordpress.com/2009/12/logos.png?w=300 300w, https://davidepalmisano.files.wordpress.com/2009/12/logos.png?w=270 270w, https://davidepalmisano.files.wordpress.com/2009/12/logos.png?w=540 540w, https://davidepalmisano.files.wordpress.com/2009/12/logos.png?w=150 150w"
  1701. sizes="(max-width: 270px) 100vw, 270px" /></a><br />
  1702. Just few days ago the popular ReadWriteWeb published a list of the
  1703. <a href=
  1704. "http://www.readwriteweb.com/archives/top_10_semantic_web_products_of_2009.php">
  1705. 2009 Top Ten Semantic Web products</a> as they did one year ago
  1706. with the <a href=
  1707. "http://www.readwriteweb.com/archives/top_10_semantic_web_products_2008.php">
  1708. 2008 Top Ten</a>.</p>
  1709. <p><strong>This two milestones are a good opportunity to make
  1710. something similar to a balance.</strong> Or just to do a quick
  1711. overview on what’s changed in the <em>“Web of Data”</em>, only one
  1712. year later.</p>
  1713. <p>The 2008 Top Ten foreseen the following applications, listed in
  1714. the same ReadWriteWeb order and enriched with some personal
  1715. opinions.</p>
  1716. <p><strong>Yahoo Search Monkey</strong></p>
  1717. <p>It’s great. <a href=
  1718. "http://developer.yahoo.com/searchmonkey/">Search Monkey</a>
  1719. represents the first kind of next-generation search engines due its
  1720. capability to be fully customized by third party developers.
  1721. Recently, a <a href=
  1722. "http://www.mail-archive.com/public-lod@w3.org/msg03691.html">breaking
  1723. news</a> woke up the <em>“sem webbers”</em> of the whole planet:
  1724. Yahoo started to show structured data exposed with RDFa in the
  1725. search results page. That news bounced all over the Web and those
  1726. interested in SEO started to appreciate Semantic Web technologies
  1727. for their business. <strong>But, unfortunately, at the moment I’m
  1728. writing, RDFa is not showed anymore on search results due to an
  1729. layout update that broke this functionality.</strong> Even if there
  1730. are rumors on a imminent fixing of this, the main problem is the
  1731. robustness and the reliability of that kind of services: investors
  1732. need to be properly guaranteed on the effectiveness of their
  1733. investments.</p>
  1734. <p><strong>Powerset</strong></p>
  1735. <p>Probably, this neat application has became really popular when
  1736. it has been acquired by Microsoft. It allows to make simple natural
  1737. language queries like “<em>film where Kevin Spacey acted”</em> and,
  1738. a first glance, the results seems really much better than other
  1739. traditional search engines. Honestly I don’t really know what are
  1740. the technologies they are using to do this magic. <strong>But, it
  1741. would be nice to compare their results with an hypothetical service
  1742. that translates such human text queries in a set of SPARQL queries
  1743. over DBpedia.</strong> Anyone interested in do that? I’ll be more
  1744. than happy to be engaged in a project like that.</p>
  1745. <p><strong>Open Calais</strong></p>
  1746. <p>With a large and massive branding operation these guys built the
  1747. image of this service as it be the only one fitting everyone’s need
  1748. when dealing with semantic enrichment of unstructured free-texts.
  1749. Even this is partly true (why don’t mentioning the <a href=
  1750. "http://incubator.apache.org/uima/annotators.html#opencalais.annotator">
  1751. Apache UIMA Open Calais annotator</a>?), there are a lot of other
  1752. interesting services that are, for certain aspects, more intriguing
  1753. than the Reuters one. Don’t believe me? Let’s give a try to
  1754. <a href="http://www.alchemyapi.com/">AlchemyAPI</a>.</p>
  1755. <p><strong>Dapper</strong></p>
  1756. <p>I have to admit my ignorance here. I never heard about it, but
  1757. it looks very very interesting. Certainly this service that offers,
  1758. mainly, some sort of semantic advertisement is more than promising.
  1759. I’ll keep an eye on it.</p>
  1760. <p><strong>Hakia</strong></p>
  1761. <p>Down at the moment I’m writing. <img src=
  1762. "https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f626.png"
  1763. alt="😦" class="wp-smiley" style=
  1764. "height: 1em; max-height: 1em;" /></p>
  1765. <p><strong>Tripit</strong></p>
  1766. <p>Many friends of mine are using it and this could be enough to
  1767. give it popularity. Again, I don’t know if they are using some of
  1768. the W3C Semantic Web technologies to models their data. RDF or not,
  1769. this is a neat example of semantic web application with a good
  1770. potential: is this enough to you?</p>
  1771. <p><strong>BooRah</strong></p>
  1772. <p>Another case of personal ignorance. This magic is, mainly, a
  1773. restaurant review site. BooRah uses semantic analysis and natural
  1774. language processing to aggregate reviews from food blogs. Because
  1775. of this, BooRah can recognize praise and criticism in these reviews
  1776. and then rates restaurants accordingly to them. One criticism? The
  1777. underlying data are perhaps not so much rich. Sounds impossible to
  1778. me that searching for <em>“Pizza in Italy”</em> returns
  1779. nothing.</p>
  1780. <p><strong>Blue Organizer (or GetGlue?)</strong></p>
  1781. <p>It’s not a secret that <strong>I consider Glue one of the most
  1782. innovative and intriguing stuff on the Web</strong>. And when it
  1783. appeared on the ReadWriteWeb 10 Top Semantic Web applications was
  1784. far away from what is now. Just one year later, GetGlue (Blue
  1785. Organizer seems to be the former name) appears as a growing and
  1786. live community of people that realized how is important to wave the
  1787. Web with the aim of a tool that act as a content cross-recommender.
  1788. Moreover GetGlue provides a neat set of Web APIs that I’m widely
  1789. using within the <a href="http://notube.tv">NoTube project</a>.</p>
  1790. <p><strong>Zemanta</strong></p>
  1791. <p>A clear idea, a powerful branding and a well designed set of
  1792. services accessible with Web APIs make Zemanta one of the most
  1793. successful product on the stage. Do I have to say anything more? If
  1794. you like Zemanta I suggest you to keep an eye also on <a href=
  1795. "http://twitter.com/dpalmisano/status/6266367726">Loomp</a>, a nice
  1796. stuff presented at the European Semantic Technology Conference
  1797. 2009.</p>
  1798. <p><strong>UpTake.com</strong></p>
  1799. <p>Mainly, a semantic search engine over a huge database containing
  1800. more than 400,000 hotels in the US. Where’s the semantic there?
  1801. Uptake.com crawls and semantically extracts the information
  1802. implicitly hidden in those records. <strong>A good example of how
  1803. innovative technologies could be applied to well-know application
  1804. domains as the hotels searching one.</strong></p>
  1805. <p style="text-align:center;"><em>On year later…</em></p>
  1806. <p>Indubitably, 2009 has been ruled by the Linked Data Initiative,
  1807. as I love to call it. Officially Linked Data is about <em>“using
  1808. the Web to connect related data that wasn’t previously linked, or
  1809. using the Web to lower the barriers to linking data currently
  1810. linked using other methods”</em> and, if we look to its <a href=
  1811. "http://richard.cyganiak.de/2007/10/lod">growing rate</a>, could be
  1812. simple to bet on it success.</p>
  1813. <p>Here is the the 2009 top-ten where I omitted GetGlue, Zemanta
  1814. and OpenCalais since they already appeared also in the 2008
  1815. edition:</p>
  1816. <p><strong>Google Search Options and Rich Snippets</strong></p>
  1817. <p>When this new feature of Google has been announced the whole
  1818. Semantic Web community realized that something very powerful
  1819. started to move along. Google Rich Snippet makes use of the RDFa
  1820. contained in the HTML Web pages to power rich snippets feature.</p>
  1821. <p><strong>Feedly</strong></p>
  1822. <p>It’s a very very nice feeds aggregator built upon Google Reader,
  1823. Twitter and FriendFeed. It’s easy to use, nice and really useful
  1824. (well, at least it seems so to me) but, unfortunately, I cannot see
  1825. where is the Semantic aspects here.</p>
  1826. <p><strong>Apture</strong></p>
  1827. <p>This JavaScript cool stuff allows publishers to add contextual
  1828. information to links via pop-ups which display when users hover
  1829. over or click on them. Watching HTML pages built with the aid of
  1830. this tool, Apture closely remembers me the <a href=
  1831. "http://www.snap.com/snapshots.php">WordPress Snap-Shot plugin</a>.
  1832. But Apture seems richer than Snap-Shot since it allows the
  1833. publishers to directly add links and other stuff they want to
  1834. display when the pages are rendered.</p>
  1835. <p><strong>BBC Semantic Music Project</strong></p>
  1836. <p>Built upon Musicbrainz.org (one of the most representative
  1837. Linked Data cloud) it’s a very remarkable initiative. Personally,
  1838. I’m using it within the NoTube project to disambiguate Last.fm
  1839. bands. Concretely, given a certain Last.fm band identifier, I make
  1840. a query to the BBC /music that returns me a URI. With this URI I
  1841. ask the <a href="http://sameas.org/">sameas.org</a> service to give
  1842. me other URIs referring to the same band. In this way I can
  1843. associate to every Last.fm bands a set of Linked Data URIs where
  1844. obtain a full flavor of coherent data about them.</p>
  1845. <p><strong>Freebase</strong></p>
  1846. <p>It’s an open, semantically marked up shared database powered by
  1847. <a href="http://www.metaweb.com/">Metaweb.com</a> a great company
  1848. based in San Francisco. Its popularity is growing fast, as <a href=
  1849. "http://www.readwriteweb.com/archives/metawebs_freebase_now_60_large.php">
  1850. ReadWriteWeb already noticed</a>. Somehow similar to Wikipedia,
  1851. <strong>Freebase provides all the mechanisms necessary to syndicate
  1852. its data in a machine-readable form. Mainly, with RDF.</strong>
  1853. Moreover, other Linked Data clouds started to add owl:sameAs links
  1854. to Freebase: do I have to add something else?</p>
  1855. <p><strong>Dbpedia</strong></p>
  1856. <p>DBpedia is the nucleus of the <a href=
  1857. "http://www.citeulike.org/user/mdreid/article/2901818">Web of
  1858. Data</a>. The only thing I’d like to add is: it deserves to be on
  1859. the ReadWriteWeb 2009 top-ten more than the others.</p>
  1860. <p><strong>Data.gov</strong></p>
  1861. <p>It’s a remarkable US government initiative to <em>“increase
  1862. public access to high value, machine readable datasets generated by
  1863. the Executive Branch of the Federal Government.”</em>. It’s a start
  1864. and I dream to see something like this even here in Italy.</p>
  1865. <p style="text-align:center;"><em>So what’s up in the end?</em></p>
  1866. <p><strong>It’s my opinion that the 2009 has been the year of
  1867. Linked Data. New clouds born every month, new links between the
  1868. already existent ones are established and a new breed of developers
  1869. are being aware of the potential and the threats of Linked Data
  1870. consuming applications.</strong> It seems that the Web of Data is
  1871. finally taking shape even if something strange is still in the air.
  1872. First of all, if we give a closer look to the ReadWriteWeb 2009 Top
  1873. Ten I have to underline that 3 products on 10 already were also in
  1874. the 2008 chart. Maybe the popular blog liked to stress on the
  1875. progresses that these products made but it sound a bit strange to
  1876. me that they forgot nice products such as the <a href=
  1877. "http://freemix.it">FreeMix</a>, <a href=
  1878. "http://www.alchemyapi.com/">Alchemy API</a>, <a href=
  1879. "http://sindice.com">Sindice</a>, <a href=
  1880. "http://virtuoso.openlinksw.com/">OpenLink Virtuoso</a> and the
  1881. BestBuy.com usage of <a href=
  1882. "http://ebusiness-unibw.org/pipermail/goodrelations/2009-August/000103.html">
  1883. GoodRelations ontology</a>. Secondly, 3 products listed in the 2009
  1884. chart are public-funded initiatives that, even if is reasonable due
  1885. to the nature of the products, it leave me with the impression that
  1886. private investors are not in the loop yet.</p>
  1887. <p style="text-align:center;"><em>What I expect from the 2010,
  1888. then?</em></p>
  1889. <p>A large and massive rush to using RDFa for SEO porpoises, a
  1890. sustained grow of Linked Data clouds and, I really hope,
  1891. <strong>the rise of a new application paradigm grounded to the
  1892. consumption of such interlinked data.</strong></p>
  1893. </div>
  1894. </planet:content>
  1895.  <dc:date rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2024-03-11T14:10:06.000000Z</dc:date>
  1896.  <title>RWW 2009 Top 10 Semantic Web products: one year
  1897. later…</title>
  1898.  <link>https://davidepalmisano.wordpress.com/2009/12/13/rww-2009-top-10-semantic-web-products-one-year-later/</link>
  1899.  <content:encoded rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral"><![CDATA[
  1900. <div xmlns='http://www.w3.org/1999/xhtml'>
  1901. <div>
  1902. <p><a href=
  1903. "https://davidepalmisano.files.wordpress.com/2009/12/logos.png"><img data-attachment-id="36"
  1904. data-permalink=
  1905. "https://davidepalmisano.wordpress.com/2009/12/13/rww-2009-top-10-semantic-web-products-one-year-later/logos/"
  1906. data-orig-file=
  1907. "https://davidepalmisano.files.wordpress.com/2009/12/logos.png"
  1908. data-orig-size="660,494" data-comments-opened="1" data-image-meta=
  1909. "{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}"
  1910. data-image-title="logos" data-image-description=""
  1911. data-image-caption="" data-medium-file=
  1912. "https://davidepalmisano.files.wordpress.com/2009/12/logos.png?w=300"
  1913. data-large-file=
  1914. "https://davidepalmisano.files.wordpress.com/2009/12/logos.png?w=450"
  1915. class="alignleft size-medium wp-image-36" title="logos" src=
  1916. "https://davidepalmisano.files.wordpress.com/2009/12/logos.png?w=300&amp;h=224"
  1917. alt="" srcset=
  1918. "https://davidepalmisano.files.wordpress.com/2009/12/logos.png?w=300 300w, https://davidepalmisano.files.wordpress.com/2009/12/logos.png?w=270 270w, https://davidepalmisano.files.wordpress.com/2009/12/logos.png?w=540 540w, https://davidepalmisano.files.wordpress.com/2009/12/logos.png?w=150 150w"
  1919. sizes="(max-width: 270px) 100vw, 270px" /></a><br />
  1920. Just few days ago the popular ReadWriteWeb published a list of the
  1921. <a href=
  1922. "http://www.readwriteweb.com/archives/top_10_semantic_web_products_of_2009.php">
  1923. 2009 Top Ten Semantic Web products</a> as they did one year ago
  1924. with the <a href=
  1925. "http://www.readwriteweb.com/archives/top_10_semantic_web_products_2008.php">
  1926. 2008 Top Ten</a>.</p>
  1927. <p><strong>This two milestones are a good opportunity to make
  1928. something similar to a balance.</strong> Or just to do a quick
  1929. overview on what’s changed in the <em>“Web of Data”</em>, only one
  1930. year later.</p>
  1931. <p>The 2008 Top Ten foreseen the following applications, listed in
  1932. the same ReadWriteWeb order and enriched with some personal
  1933. opinions.</p>
  1934. <p><strong>Yahoo Search Monkey</strong></p>
  1935. <p>It’s great. <a href=
  1936. "http://developer.yahoo.com/searchmonkey/">Search Monkey</a>
  1937. represents the first kind of next-generation search engines due its
  1938. capability to be fully customized by third party developers.
  1939. Recently, a <a href=
  1940. "http://www.mail-archive.com/public-lod@w3.org/msg03691.html">breaking
  1941. news</a> woke up the <em>“sem webbers”</em> of the whole planet:
  1942. Yahoo started to show structured data exposed with RDFa in the
  1943. search results page. That news bounced all over the Web and those
  1944. interested in SEO started to appreciate Semantic Web technologies
  1945. for their business. <strong>But, unfortunately, at the moment I’m
  1946. writing, RDFa is not showed anymore on search results due to an
  1947. layout update that broke this functionality.</strong> Even if there
  1948. are rumors on a imminent fixing of this, the main problem is the
  1949. robustness and the reliability of that kind of services: investors
  1950. need to be properly guaranteed on the effectiveness of their
  1951. investments.</p>
  1952. <p><strong>Powerset</strong></p>
  1953. <p>Probably, this neat application has became really popular when
  1954. it has been acquired by Microsoft. It allows to make simple natural
  1955. language queries like “<em>film where Kevin Spacey acted”</em> and,
  1956. a first glance, the results seems really much better than other
  1957. traditional search engines. Honestly I don’t really know what are
  1958. the technologies they are using to do this magic. <strong>But, it
  1959. would be nice to compare their results with an hypothetical service
  1960. that translates such human text queries in a set of SPARQL queries
  1961. over DBpedia.</strong> Anyone interested in do that? I’ll be more
  1962. than happy to be engaged in a project like that.</p>
  1963. <p><strong>Open Calais</strong></p>
  1964. <p>With a large and massive branding operation these guys built the
  1965. image of this service as it be the only one fitting everyone’s need
  1966. when dealing with semantic enrichment of unstructured free-texts.
  1967. Even this is partly true (why don’t mentioning the <a href=
  1968. "http://incubator.apache.org/uima/annotators.html#opencalais.annotator">
  1969. Apache UIMA Open Calais annotator</a>?), there are a lot of other
  1970. interesting services that are, for certain aspects, more intriguing
  1971. than the Reuters one. Don’t believe me? Let’s give a try to
  1972. <a href="http://www.alchemyapi.com/">AlchemyAPI</a>.</p>
  1973. <p><strong>Dapper</strong></p>
  1974. <p>I have to admit my ignorance here. I never heard about it, but
  1975. it looks very very interesting. Certainly this service that offers,
  1976. mainly, some sort of semantic advertisement is more than promising.
  1977. I’ll keep an eye on it.</p>
  1978. <p><strong>Hakia</strong></p>
  1979. <p>Down at the moment I’m writing. <img src=
  1980. "https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/72x72/1f626.png"
  1981. alt="😦" class="wp-smiley" style=
  1982. "height: 1em; max-height: 1em;" /></p>
  1983. <p><strong>Tripit</strong></p>
  1984. <p>Many friends of mine are using it and this could be enough to
  1985. give it popularity. Again, I don’t know if they are using some of
  1986. the W3C Semantic Web technologies to models their data. RDF or not,
  1987. this is a neat example of semantic web application with a good
  1988. potential: is this enough to you?</p>
  1989. <p><strong>BooRah</strong></p>
  1990. <p>Another case of personal ignorance. This magic is, mainly, a
  1991. restaurant review site. BooRah uses semantic analysis and natural
  1992. language processing to aggregate reviews from food blogs. Because
  1993. of this, BooRah can recognize praise and criticism in these reviews
  1994. and then rates restaurants accordingly to them. One criticism? The
  1995. underlying data are perhaps not so much rich. Sounds impossible to
  1996. me that searching for <em>“Pizza in Italy”</em> returns
  1997. nothing.</p>
  1998. <p><strong>Blue Organizer (or GetGlue?)</strong></p>
  1999. <p>It’s not a secret that <strong>I consider Glue one of the most
  2000. innovative and intriguing stuff on the Web</strong>. And when it
  2001. appeared on the ReadWriteWeb 10 Top Semantic Web applications was
  2002. far away from what is now. Just one year later, GetGlue (Blue
  2003. Organizer seems to be the former name) appears as a growing and
  2004. live community of people that realized how is important to wave the
  2005. Web with the aim of a tool that act as a content cross-recommender.
  2006. Moreover GetGlue provides a neat set of Web APIs that I’m widely
  2007. using within the <a href="http://notube.tv">NoTube project</a>.</p>
  2008. <p><strong>Zemanta</strong></p>
  2009. <p>A clear idea, a powerful branding and a well designed set of
  2010. services accessible with Web APIs make Zemanta one of the most
  2011. successful product on the stage. Do I have to say anything more? If
  2012. you like Zemanta I suggest you to keep an eye also on <a href=
  2013. "http://twitter.com/dpalmisano/status/6266367726">Loomp</a>, a nice
  2014. stuff presented at the European Semantic Technology Conference
  2015. 2009.</p>
  2016. <p><strong>UpTake.com</strong></p>
  2017. <p>Mainly, a semantic search engine over a huge database containing
  2018. more than 400,000 hotels in the US. Where’s the semantic there?
  2019. Uptake.com crawls and semantically extracts the information
  2020. implicitly hidden in those records. <strong>A good example of how
  2021. innovative technologies could be applied to well-know application
  2022. domains as the hotels searching one.</strong></p>
  2023. <p style="text-align:center;"><em>On year later…</em></p>
  2024. <p>Indubitably, 2009 has been ruled by the Linked Data Initiative,
  2025. as I love to call it. Officially Linked Data is about <em>“using
  2026. the Web to connect related data that wasn’t previously linked, or
  2027. using the Web to lower the barriers to linking data currently
  2028. linked using other methods”</em> and, if we look to its <a href=
  2029. "http://richard.cyganiak.de/2007/10/lod">growing rate</a>, could be
  2030. simple to bet on it success.</p>
  2031. <p>Here is the the 2009 top-ten where I omitted GetGlue, Zemanta
  2032. and OpenCalais since they already appeared also in the 2008
  2033. edition:</p>
  2034. <p><strong>Google Search Options and Rich Snippets</strong></p>
  2035. <p>When this new feature of Google has been announced the whole
  2036. Semantic Web community realized that something very powerful
  2037. started to move along. Google Rich Snippet makes use of the RDFa
  2038. contained in the HTML Web pages to power rich snippets feature.</p>
  2039. <p><strong>Feedly</strong></p>
  2040. <p>It’s a very very nice feeds aggregator built upon Google Reader,
  2041. Twitter and FriendFeed. It’s easy to use, nice and really useful
  2042. (well, at least it seems so to me) but, unfortunately, I cannot see
  2043. where is the Semantic aspects here.</p>
  2044. <p><strong>Apture</strong></p>
  2045. <p>This JavaScript cool stuff allows publishers to add contextual
  2046. information to links via pop-ups which display when users hover
  2047. over or click on them. Watching HTML pages built with the aid of
  2048. this tool, Apture closely remembers me the <a href=
  2049. "http://www.snap.com/snapshots.php">WordPress Snap-Shot plugin</a>.
  2050. But Apture seems richer than Snap-Shot since it allows the
  2051. publishers to directly add links and other stuff they want to
  2052. display when the pages are rendered.</p>
  2053. <p><strong>BBC Semantic Music Project</strong></p>
  2054. <p>Built upon Musicbrainz.org (one of the most representative
  2055. Linked Data cloud) it’s a very remarkable initiative. Personally,
  2056. I’m using it within the NoTube project to disambiguate Last.fm
  2057. bands. Concretely, given a certain Last.fm band identifier, I make
  2058. a query to the BBC /music that returns me a URI. With this URI I
  2059. ask the <a href="http://sameas.org/">sameas.org</a> service to give
  2060. me other URIs referring to the same band. In this way I can
  2061. associate to every Last.fm bands a set of Linked Data URIs where
  2062. obtain a full flavor of coherent data about them.</p>
  2063. <p><strong>Freebase</strong></p>
  2064. <p>It’s an open, semantically marked up shared database powered by
  2065. <a href="http://www.metaweb.com/">Metaweb.com</a> a great company
  2066. based in San Francisco. Its popularity is growing fast, as <a href=
  2067. "http://www.readwriteweb.com/archives/metawebs_freebase_now_60_large.php">
  2068. ReadWriteWeb already noticed</a>. Somehow similar to Wikipedia,
  2069. <strong>Freebase provides all the mechanisms necessary to syndicate
  2070. its data in a machine-readable form. Mainly, with RDF.</strong>
  2071. Moreover, other Linked Data clouds started to add owl:sameAs links
  2072. to Freebase: do I have to add something else?</p>
  2073. <p><strong>Dbpedia</strong></p>
  2074. <p>DBpedia is the nucleus of the <a href=
  2075. "http://www.citeulike.org/user/mdreid/article/2901818">Web of
  2076. Data</a>. The only thing I’d like to add is: it deserves to be on
  2077. the ReadWriteWeb 2009 top-ten more than the others.</p>
  2078. <p><strong>Data.gov</strong></p>
  2079. <p>It’s a remarkable US government initiative to <em>“increase
  2080. public access to high value, machine readable datasets generated by
  2081. the Executive Branch of the Federal Government.”</em>. It’s a start
  2082. and I dream to see something like this even here in Italy.</p>
  2083. <p style="text-align:center;"><em>So what’s up in the end?</em></p>
  2084. <p><strong>It’s my opinion that the 2009 has been the year of
  2085. Linked Data. New clouds born every month, new links between the
  2086. already existent ones are established and a new breed of developers
  2087. are being aware of the potential and the threats of Linked Data
  2088. consuming applications.</strong> It seems that the Web of Data is
  2089. finally taking shape even if something strange is still in the air.
  2090. First of all, if we give a closer look to the ReadWriteWeb 2009 Top
  2091. Ten I have to underline that 3 products on 10 already were also in
  2092. the 2008 chart. Maybe the popular blog liked to stress on the
  2093. progresses that these products made but it sound a bit strange to
  2094. me that they forgot nice products such as the <a href=
  2095. "http://freemix.it">FreeMix</a>, <a href=
  2096. "http://www.alchemyapi.com/">Alchemy API</a>, <a href=
  2097. "http://sindice.com">Sindice</a>, <a href=
  2098. "http://virtuoso.openlinksw.com/">OpenLink Virtuoso</a> and the
  2099. BestBuy.com usage of <a href=
  2100. "http://ebusiness-unibw.org/pipermail/goodrelations/2009-August/000103.html">
  2101. GoodRelations ontology</a>. Secondly, 3 products listed in the 2009
  2102. chart are public-funded initiatives that, even if is reasonable due
  2103. to the nature of the products, it leave me with the impression that
  2104. private investors are not in the loop yet.</p>
  2105. <p style="text-align:center;"><em>What I expect from the 2010,
  2106. then?</em></p>
  2107. <p>A large and massive rush to using RDFa for SEO porpoises, a
  2108. sustained grow of Linked Data clouds and, I really hope,
  2109. <strong>the rise of a new application paradigm grounded to the
  2110. consumption of such interlinked data.</strong></p>
  2111. </div>
  2112. </div>]]></content:encoded>
  2113.  <description>Just few days ago the popular ReadWriteWeb published a list of the 2009 Top Ten Semantic Web products as they did one year ago with the 2008 Top Ten . This two milestones are a good opportunity to make something similar to a balance. Or just to do a quick overview on what’s changed in the “Web of Data” , only one year later. The 2008 Top Ten foreseen the following applications, listed in the same ReadWriteWeb order and enriched with some personal opinions. Yahoo Search Monkey It’s great. Search Monkey represents the first kind of next-generation search engines due ...</description>
  2114. </item>
  2115. <item rdf:about="https://davidepalmisano.wordpress.com/2009/09/20/the-italian-political-activism-and-the-semantic-web/">
  2116.  <dc:creator>Davide Palmisano</dc:creator>
  2117.  <dc:source>turn off the lights, please by Davide Palmisano</dc:source>
  2118.  <dc:relation>http://davidepalmisano.wordpress.com/</dc:relation>
  2119.  <planet:content xmlns="http://www.w3.org/1999/xhtml" rdf:parseType="Literal">
  2120. <div>
  2121. <p><img data-attachment-id="12" data-permalink=
  2122. "https://davidepalmisano.wordpress.com/2009/09/20/the-italian-political-activism-and-the-semantic-web/grillo05g/"
  2123. data-orig-file=
  2124. "https://davidepalmisano.files.wordpress.com/2009/09/grillo05g.jpg"
  2125. data-orig-size="300,230" data-comments-opened="1" data-image-meta=
  2126. "{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}"
  2127. data-image-title="Beppe Grillo" data-image-description=""
  2128. data-image-caption="" data-medium-file=
  2129. "https://davidepalmisano.files.wordpress.com/2009/09/grillo05g.jpg?w=300"
  2130. data-large-file=
  2131. "https://davidepalmisano.files.wordpress.com/2009/09/grillo05g.jpg?w=300"
  2132. class="alignleft size-full wp-image-12" title="Beppe Grillo" src=
  2133. "https://davidepalmisano.files.wordpress.com/2009/09/grillo05g.jpg?w=450"
  2134. alt="Beppe Grillo" srcset=
  2135. "https://davidepalmisano.files.wordpress.com/2009/09/grillo05g.jpg?w=240&amp;h=184 240w, https://davidepalmisano.files.wordpress.com/2009/09/grillo05g.jpg?w=150&amp;h=115 150w, https://davidepalmisano.files.wordpress.com/2009/09/grillo05g.jpg 300w"
  2136. sizes="(max-width: 240px) 100vw, 240px" /></p>
  2137. <div id="_mcePaste" style=
  2138. "position:absolute;left:-10000px;top:0;width:1px;height:1px;">A
  2139. couple of years ago, during his live show, the popular italian
  2140. blogger and activist Beppe Grillo provided a quick demonstration
  2141. about how the Web concretely realizes the “six degrees of
  2142. separation”. The italian blogger, today a Web enthusiast, shown
  2143. that it was possible to him to get in contact with someone very
  2144. famous using a couple of different websites: imdb, Wikipedia and
  2145. few others. Starting from a movie where he acted, he could reach
  2146. the movie producer and the producer could be in contact with
  2147. another actor due to previous work with this latter and so
  2148. on.&#160;</div>
  2149. <div id="_mcePaste" style=
  2150. "position:absolute;left:-10000px;top:0;width:1px;height:1px;">This
  2151. demonstration consisted in a series of links that were opened
  2152. leading to some Web pages containing information where extract the
  2153. relationships that the showman wants to achieve.</div>
  2154. <div id="_mcePaste" style=
  2155. "position:absolute;left:-10000px;top:0;width:1px;height:1px;">This
  2156. gig came back to my mind while I was thinking on how, what I call
  2157. the “Linked Data Philosophy”, is impacting on the traditional Web
  2158. and I imagined what Beppe Grillo could show nowadays.</div>
  2159. <div id="_mcePaste" style=
  2160. "position:absolute;left:-10000px;top:0;width:1px;height:1px;">Just
  2161. the following, simple, trivial and short SPARQL query:</div>
  2162. <div id="_mcePaste" style=
  2163. "position:absolute;left:-10000px;top:0;width:1px;height:1px;">
  2164. &lt;insert here the SPARQL query&gt;</div>
  2165. <div id="_mcePaste" style=
  2166. "position:absolute;left:-10000px;top:0;width:1px;height:1px;">
  2167. Although Beppe is a great comedian it may be hard also for him
  2168. making people laugh with this. But, the point here is not about
  2169. laughs but about data: in this sense, the Web of Data is providing
  2170. an outstanding and an extremely powerful way to access to
  2171. incredible twine of machine readable interlinked data.</div>
  2172. <div id="_mcePaste" style=
  2173. "position:absolute;left:-10000px;top:0;width:1px;height:1px;">
  2174. Recently, another nice and remarkable italian initiative appeared
  2175. on the Web: OpenParlamento.it. It’s, mainly, a service where the
  2176. Italian congressmen are displayed and they are positioned on a
  2177. chart basing on the similarity of their votes on law
  2178. proposals.</div>
  2179. <div id="_mcePaste" style=
  2180. "position:absolute;left:-10000px;top:0;width:1px;height:1px;">Ok.
  2181. Cool. But how the Semantic Web could improve this stuff?</div>
  2182. <div id="_mcePaste" style=
  2183. "position:absolute;left:-10000px;top:0;width:1px;height:1px;">First
  2184. of all, it would be very straightforward to provide a SPARQL
  2185. endpoint providing some good RDF for this data. Like the following
  2186. example:</div>
  2187. <div id="_mcePaste" style=
  2188. "position:absolute;left:-10000px;top:0;width:1px;height:1px;">
  2189. &lt;rdf:RDF&gt;</div>
  2190. <div id="_mcePaste" style=
  2191. "position:absolute;left:-10000px;top:0;width:1px;height:1px;">
  2192. &lt;rdf:Description rdf:about:”<a href=
  2193. "http://openparlamento.it/senate/Mario_Rossi%E2%80%9D&amp;gt" rel=
  2194. "nofollow">http://openparlamento.it/senate/Mario_Rossi”&amp;gt</a>;</div>
  2195. <div id="_mcePaste" style=
  2196. "position:absolute;left:-10000px;top:0;width:1px;height:1px;">
  2197. &lt;rdf:type rdf:resource=”<a href=
  2198. "http://openparlamento.it/ontology/Congressman%E2%80%9D/&amp;gt"
  2199. rel=
  2200. "nofollow">http://openparlamento.it/ontology/Congressman”/&amp;gt</a>;</div>
  2201. <div id="_mcePaste" style=
  2202. "position:absolute;left:-10000px;top:0;width:1px;height:1px;">
  2203. &lt;foaf:name&gt;Mario Rossi&lt;/foaf:name&gt;</div>
  2204. <div id="_mcePaste" style=
  2205. "position:absolute;left:-10000px;top:0;width:1px;height:1px;">
  2206. &lt;foaf:gender&gt;male&lt;/foaf:gender&gt;</div>
  2207. <div id="_mcePaste" style=
  2208. "position:absolute;left:-10000px;top:0;width:1px;height:1px;">
  2209. &lt;openp:politicalGroup rdf:resource=”<a href=
  2210. "http://openparlamento.it/groups/Democratic_Party%E2%80%9D/&amp;gt"
  2211. rel=
  2212. "nofollow">http://openparlamento.it/groups/Democratic_Party”/&amp;gt</a>;</div>
  2213. <div id="_mcePaste" style=
  2214. "position:absolute;left:-10000px;top:0;width:1px;height:1px;">
  2215. &lt;owl:sameas rdf:resource=”<a href=
  2216. "http://dbpedia.org/resource/Mario_Rossi%E2%80%9D/&amp;gt" rel=
  2217. "nofollow">http://dbpedia.org/resource/Mario_Rossi”/&amp;gt</a>;</div>
  2218. <div id="_mcePaste" style=
  2219. "position:absolute;left:-10000px;top:0;width:1px;height:1px;">
  2220. &lt;/rdf:Description&gt;</div>
  2221. <div id="_mcePaste" style=
  2222. "position:absolute;left:-10000px;top:0;width:1px;height:1px;">
  2223. &lt;/rdf:RDF&gt;</div>
  2224. <div id="_mcePaste" style=
  2225. "position:absolute;left:-10000px;top:0;width:1px;height:1px;">where
  2226. names, descriptions, political belonging and more are provided.
  2227. Moreover a property called openp:similarity could be used to map
  2228. closer congressmen, using the same information of the already cited
  2229. chart.&#160;</div>
  2230. <div id="_mcePaste" style=
  2231. "position:absolute;left:-10000px;top:0;width:1px;height:1px;">
  2232. Secondly, all the information about congressmen are published on
  2233. the official Italian chambers web site. Wrapping this data,
  2234. OpenParlamento.it could provide an extremely exhaustive set of
  2235. official information and, more important, links to DBpedia will be
  2236. the key to get a full set of machine processable data also from
  2237. other Linked Data clouds.</div>
  2238. <div id="_mcePaste" style=
  2239. "position:absolute;left:-10000px;top:0;width:1px;height:1px;">How
  2240. to benefits from all of this? Apart the fact of employing a
  2241. cutting-edge technology to syndicate data, everyone who wants link
  2242. the data provided by OpenParlamento.it on his web pages can easily
  2243. do it using RDFa. Like the follow example, where a fragment of an
  2244. HTML page representing a news on the above congressman:</div>
  2245. <div id="_mcePaste" style=
  2246. "position:absolute;left:-10000px;top:0;width:1px;height:1px;">
  2247. &lt;div&gt;</div>
  2248. <div id="_mcePaste" style=
  2249. "position:absolute;left:-10000px;top:0;width:1px;height:1px;">
  2250. …</div>
  2251. <div id="_mcePaste" style=
  2252. "position:absolute;left:-10000px;top:0;width:1px;height:1px;">
  2253. &lt;/div&gt;</div>
  2254. <div id="_mcePaste" style=
  2255. "position:absolute;left:-10000px;top:0;width:1px;height:1px;">
  2256. contains some RDFa linking that page to the OpenParlamento.it
  2257. cloud.</div>
  2258. <div id="_mcePaste" style=
  2259. "position:absolute;left:-10000px;top:0;width:1px;height:1px;">With
  2260. these technologies as a basis, a new breed of applications (like
  2261. web crawlers, for those interested in SEO) will access and process
  2262. these data in a new, fashionable and extremely powerful way.</div>
  2263. <p>A couple of years ago, during his live show, the popular italian
  2264. blogger and activist <a href="http://www.beppegrillo.it" target=
  2265. "_blank">Beppe Grillo</a> provided a quick demonstration about how
  2266. the Web concretely realizes the “six degrees of separation”. The
  2267. italian blogger, today a Web enthusiast, shown that it was possible
  2268. to him to get in contact with someone very famous using a couple of
  2269. different websites: <a href="http://www.imdb.com" target=
  2270. "_blank">imdb</a>, <a href="http://www.wikipedia.org" target=
  2271. "_blank">Wikipedia</a> and few others. Starting from a movie where
  2272. he acted, he could reach the movie producer and the producer could
  2273. be in contact with another actor due to previous work with this
  2274. latter and so on.&#160;</p>
  2275. <p>This demonstration consisted in a series of links that were
  2276. opened leading to some Web pages containing information where
  2277. extract the relationships that the showman wants to achieve.</p>
  2278. <p>This gig came back to my mind while I was thinking on how, what
  2279. I call <strong>the</strong> <a href="http://linkeddata.org/"
  2280. target="_blank"><strong>“Linked Data
  2281. Philosophy”</strong></a><strong>, is impacting on the traditional
  2282. Web and I imagined what Beppe Grillo could show
  2283. nowadays</strong>.</p>
  2284. <p style="text-align:center;"><em>Just the following, simple,
  2285. trivial and short SPARQL query:</em></p>
  2286. <p>construct {<br />
  2287. &#160;&#160; &#160;?actor1 foaf:knows ?actor2<br />
  2288. }<br />
  2289. &#160;&#160; &#160;where {<br />
  2290. &#160;&#160; &#160;?movie dbpprop:starring ?actor1.<br />
  2291. &#160;&#160; &#160;?movie dbpprop:starring ?actor2.<br />
  2292. &#160;&#160; &#160;?movie a dbpedia-owl:Film.<br />
  2293. &#160;&#160; &#160;FILTER(?actor1 = &lt;<a href=
  2294. "http://dbpedia.org/resource/Beppe_Grillo&amp;gt" rel=
  2295. "nofollow">http://dbpedia.org/resource/Beppe_Grillo&amp;gt</a>;)<br />
  2296.  
  2297. }</p>
  2298. <p>Although Beppe is a great comedian it may be hard also for him
  2299. making people laugh with this. But, the point here is not about
  2300. laughs but about data: in this sense, <strong>the Web of Data is
  2301. providing an outstanding and an extremely powerful way to access to
  2302. incredible twine of machine readable interlinked data</strong>.</p>
  2303. <p>Recently, another nice and remarkable italian initiative
  2304. appeared on the Web: <a href="http://parlamento.openpolis.it/"
  2305. target="_blank">OpenParlamento.it</a>. It’s, mainly, a service
  2306. where the Italian congressmen are displayed and they are positioned
  2307. on a chart basing on the similarity of their votes on law
  2308. proposals.</p>
  2309. <p style="text-align:center;"><em>Ok. Cool. But how the Semantic
  2310. Web could improve this stuff?</em></p>
  2311. <p>First of all, it would be very straightforward to provide a
  2312. SPARQL endpoint providing some good RDF for this data. Like the
  2313. following example:</p>
  2314. <p>&lt;rdf:RDF&gt;<br />
  2315. &#160;&#160; &#160;&lt;rdf:Description rdf:about=”<a href=
  2316. "http://openparlamento.it/senate/Mario_Rossi%E2%80%9D&amp;gt" rel=
  2317. "nofollow">http://openparlamento.it/senate/Mario_Rossi”&amp;gt</a>;<br />
  2318.  
  2319. &#160;&#160; &#160; &#160; &#160;&lt;rdf:type
  2320. rdf:resource=”<a href="http://openparlamento.it/ontology/Congressman%E2%80%9D/&amp;gt"
  2321. rel=
  2322. "nofollow">http://openparlamento.it/ontology/Congressman”/&amp;gt</a>;<br />
  2323.  
  2324. &#160;&#160; &#160; &#160; &#160;&lt;foaf:name&gt;Mario
  2325. Rossi&lt;/foaf:name&gt;<br />
  2326. &#160;&#160; &#160; &#160;
  2327. &#160;&lt;foaf:gender&gt;male&lt;/foaf:gender&gt;<br />
  2328. &#160;&#160; &#160; &#160; &#160;&lt;openp:politicalGroup<br />
  2329. &#160;&#160; &#160; &#160; &#160; &#160;
  2330. &#160;rdf:resource=”<a href=
  2331. "http://openparlamento.it/groups/Democratic_Party%E2%80%9D/&amp;gt"
  2332. rel=
  2333. "nofollow">http://openparlamento.it/groups/Democratic_Party”/&amp;gt</a>;<br />
  2334.  
  2335. &#160;&#160; &#160; &#160; &#160;&lt;owl:sameas
  2336. rdf:resource=”<a href=
  2337. "http://dbpedia.org/resource/Mario_Rossi%E2%80%9D/&amp;gt" rel=
  2338. "nofollow">http://dbpedia.org/resource/Mario_Rossi”/&amp;gt</a>;<br />
  2339.  
  2340. &#160;&#160; &#160;&lt;/rdf:Description&gt;<br />
  2341. &lt;/rdf:RDF&gt;</p>
  2342. <p>where names, descriptions, political belonging and more are
  2343. provided. Moreover a property called <em>openp:similarity</em>
  2344. could be used to map closer congressmen, using the same information
  2345. of the already cited chart.&#160;</p>
  2346. <p>Secondly, all the information about congressmen are published on
  2347. the official Italian chambers web site. Wrapping this data,
  2348. OpenParlamento.it could provide an extremely exhaustive set of
  2349. official information and, more important, links to <a href=
  2350. "http://dbpedia.org" target="_blank">DBpedia</a> will be the key to
  2351. get a full set of machine processable data also from other Linked
  2352. Data clouds.</p>
  2353. <p>How to benefits from all of this? <strong>Apart the fact of
  2354. employing a cutting-edge technology to syndicate data, everyone who
  2355. wants link the data provided by OpenParlamento.it on his web pages
  2356. can easily do it using RDFa.</strong></p>
  2357. <p>With these technologies as a basis, a new breed of applications
  2358. (like web crawlers, for those interested in SEO) will access and
  2359. process these data in a new, fashionable and extremely powerful
  2360. way.</p>
  2361. <p style="text-align:center;"><em>Is the time&#160;for those
  2362. guys&#160;to embrace the Semantic Web , isn’t it?</em></p>
  2363. </div>
  2364. </planet:content>
  2365.  <dc:date rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2024-03-11T14:10:06.000000Z</dc:date>
  2366.  <title>the italian political activism and the semantic web</title>
  2367.  <link>https://davidepalmisano.wordpress.com/2009/09/20/the-italian-political-activism-and-the-semantic-web/</link>
  2368.  <content:encoded rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral"><![CDATA[
  2369. <div xmlns='http://www.w3.org/1999/xhtml'>
  2370. <div>
  2371. <p><img data-attachment-id="12" data-permalink=
  2372. "https://davidepalmisano.wordpress.com/2009/09/20/the-italian-political-activism-and-the-semantic-web/grillo05g/"
  2373. data-orig-file=
  2374. "https://davidepalmisano.files.wordpress.com/2009/09/grillo05g.jpg"
  2375. data-orig-size="300,230" data-comments-opened="1" data-image-meta=
  2376. "{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}"
  2377. data-image-title="Beppe Grillo" data-image-description=""
  2378. data-image-caption="" data-medium-file=
  2379. "https://davidepalmisano.files.wordpress.com/2009/09/grillo05g.jpg?w=300"
  2380. data-large-file=
  2381. "https://davidepalmisano.files.wordpress.com/2009/09/grillo05g.jpg?w=300"
  2382. class="alignleft size-full wp-image-12" title="Beppe Grillo" src=
  2383. "https://davidepalmisano.files.wordpress.com/2009/09/grillo05g.jpg?w=450"
  2384. alt="Beppe Grillo" srcset=
  2385. "https://davidepalmisano.files.wordpress.com/2009/09/grillo05g.jpg?w=240&amp;h=184 240w, https://davidepalmisano.files.wordpress.com/2009/09/grillo05g.jpg?w=150&amp;h=115 150w, https://davidepalmisano.files.wordpress.com/2009/09/grillo05g.jpg 300w"
  2386. sizes="(max-width: 240px) 100vw, 240px" /></p>
  2387. <div id="_mcePaste" style=
  2388. "position:absolute;left:-10000px;top:0;width:1px;height:1px;">A
  2389. couple of years ago, during his live show, the popular italian
  2390. blogger and activist Beppe Grillo provided a quick demonstration
  2391. about how the Web concretely realizes the “six degrees of
  2392. separation”. The italian blogger, today a Web enthusiast, shown
  2393. that it was possible to him to get in contact with someone very
  2394. famous using a couple of different websites: imdb, Wikipedia and
  2395. few others. Starting from a movie where he acted, he could reach
  2396. the movie producer and the producer could be in contact with
  2397. another actor due to previous work with this latter and so
  2398. on.&#160;</div>
  2399. <div id="_mcePaste" style=
  2400. "position:absolute;left:-10000px;top:0;width:1px;height:1px;">This
  2401. demonstration consisted in a series of links that were opened
  2402. leading to some Web pages containing information where extract the
  2403. relationships that the showman wants to achieve.</div>
  2404. <div id="_mcePaste" style=
  2405. "position:absolute;left:-10000px;top:0;width:1px;height:1px;">This
  2406. gig came back to my mind while I was thinking on how, what I call
  2407. the “Linked Data Philosophy”, is impacting on the traditional Web
  2408. and I imagined what Beppe Grillo could show nowadays.</div>
  2409. <div id="_mcePaste" style=
  2410. "position:absolute;left:-10000px;top:0;width:1px;height:1px;">Just
  2411. the following, simple, trivial and short SPARQL query:</div>
  2412. <div id="_mcePaste" style=
  2413. "position:absolute;left:-10000px;top:0;width:1px;height:1px;">
  2414. &lt;insert here the SPARQL query&gt;</div>
  2415. <div id="_mcePaste" style=
  2416. "position:absolute;left:-10000px;top:0;width:1px;height:1px;">
  2417. Although Beppe is a great comedian it may be hard also for him
  2418. making people laugh with this. But, the point here is not about
  2419. laughs but about data: in this sense, the Web of Data is providing
  2420. an outstanding and an extremely powerful way to access to
  2421. incredible twine of machine readable interlinked data.</div>
  2422. <div id="_mcePaste" style=
  2423. "position:absolute;left:-10000px;top:0;width:1px;height:1px;">
  2424. Recently, another nice and remarkable italian initiative appeared
  2425. on the Web: OpenParlamento.it. It’s, mainly, a service where the
  2426. Italian congressmen are displayed and they are positioned on a
  2427. chart basing on the similarity of their votes on law
  2428. proposals.</div>
  2429. <div id="_mcePaste" style=
  2430. "position:absolute;left:-10000px;top:0;width:1px;height:1px;">Ok.
  2431. Cool. But how the Semantic Web could improve this stuff?</div>
  2432. <div id="_mcePaste" style=
  2433. "position:absolute;left:-10000px;top:0;width:1px;height:1px;">First
  2434. of all, it would be very straightforward to provide a SPARQL
  2435. endpoint providing some good RDF for this data. Like the following
  2436. example:</div>
  2437. <div id="_mcePaste" style=
  2438. "position:absolute;left:-10000px;top:0;width:1px;height:1px;">
  2439. &lt;rdf:RDF&gt;</div>
  2440. <div id="_mcePaste" style=
  2441. "position:absolute;left:-10000px;top:0;width:1px;height:1px;">
  2442. &lt;rdf:Description rdf:about:”<a href=
  2443. "http://openparlamento.it/senate/Mario_Rossi%E2%80%9D&amp;gt" rel=
  2444. "nofollow">http://openparlamento.it/senate/Mario_Rossi”&amp;gt</a>;</div>
  2445. <div id="_mcePaste" style=
  2446. "position:absolute;left:-10000px;top:0;width:1px;height:1px;">
  2447. &lt;rdf:type rdf:resource=”<a href=
  2448. "http://openparlamento.it/ontology/Congressman%E2%80%9D/&amp;gt"
  2449. rel=
  2450. "nofollow">http://openparlamento.it/ontology/Congressman”/&amp;gt</a>;</div>
  2451. <div id="_mcePaste" style=
  2452. "position:absolute;left:-10000px;top:0;width:1px;height:1px;">
  2453. &lt;foaf:name&gt;Mario Rossi&lt;/foaf:name&gt;</div>
  2454. <div id="_mcePaste" style=
  2455. "position:absolute;left:-10000px;top:0;width:1px;height:1px;">
  2456. &lt;foaf:gender&gt;male&lt;/foaf:gender&gt;</div>
  2457. <div id="_mcePaste" style=
  2458. "position:absolute;left:-10000px;top:0;width:1px;height:1px;">
  2459. &lt;openp:politicalGroup rdf:resource=”<a href=
  2460. "http://openparlamento.it/groups/Democratic_Party%E2%80%9D/&amp;gt"
  2461. rel=
  2462. "nofollow">http://openparlamento.it/groups/Democratic_Party”/&amp;gt</a>;</div>
  2463. <div id="_mcePaste" style=
  2464. "position:absolute;left:-10000px;top:0;width:1px;height:1px;">
  2465. &lt;owl:sameas rdf:resource=”<a href=
  2466. "http://dbpedia.org/resource/Mario_Rossi%E2%80%9D/&amp;gt" rel=
  2467. "nofollow">http://dbpedia.org/resource/Mario_Rossi”/&amp;gt</a>;</div>
  2468. <div id="_mcePaste" style=
  2469. "position:absolute;left:-10000px;top:0;width:1px;height:1px;">
  2470. &lt;/rdf:Description&gt;</div>
  2471. <div id="_mcePaste" style=
  2472. "position:absolute;left:-10000px;top:0;width:1px;height:1px;">
  2473. &lt;/rdf:RDF&gt;</div>
  2474. <div id="_mcePaste" style=
  2475. "position:absolute;left:-10000px;top:0;width:1px;height:1px;">where
  2476. names, descriptions, political belonging and more are provided.
  2477. Moreover a property called openp:similarity could be used to map
  2478. closer congressmen, using the same information of the already cited
  2479. chart.&#160;</div>
  2480. <div id="_mcePaste" style=
  2481. "position:absolute;left:-10000px;top:0;width:1px;height:1px;">
  2482. Secondly, all the information about congressmen are published on
  2483. the official Italian chambers web site. Wrapping this data,
  2484. OpenParlamento.it could provide an extremely exhaustive set of
  2485. official information and, more important, links to DBpedia will be
  2486. the key to get a full set of machine processable data also from
  2487. other Linked Data clouds.</div>
  2488. <div id="_mcePaste" style=
  2489. "position:absolute;left:-10000px;top:0;width:1px;height:1px;">How
  2490. to benefits from all of this? Apart the fact of employing a
  2491. cutting-edge technology to syndicate data, everyone who wants link
  2492. the data provided by OpenParlamento.it on his web pages can easily
  2493. do it using RDFa. Like the follow example, where a fragment of an
  2494. HTML page representing a news on the above congressman:</div>
  2495. <div id="_mcePaste" style=
  2496. "position:absolute;left:-10000px;top:0;width:1px;height:1px;">
  2497. &lt;div&gt;</div>
  2498. <div id="_mcePaste" style=
  2499. "position:absolute;left:-10000px;top:0;width:1px;height:1px;">
  2500. …</div>
  2501. <div id="_mcePaste" style=
  2502. "position:absolute;left:-10000px;top:0;width:1px;height:1px;">
  2503. &lt;/div&gt;</div>
  2504. <div id="_mcePaste" style=
  2505. "position:absolute;left:-10000px;top:0;width:1px;height:1px;">
  2506. contains some RDFa linking that page to the OpenParlamento.it
  2507. cloud.</div>
  2508. <div id="_mcePaste" style=
  2509. "position:absolute;left:-10000px;top:0;width:1px;height:1px;">With
  2510. these technologies as a basis, a new breed of applications (like
  2511. web crawlers, for those interested in SEO) will access and process
  2512. these data in a new, fashionable and extremely powerful way.</div>
  2513. <p>A couple of years ago, during his live show, the popular italian
  2514. blogger and activist <a href="http://www.beppegrillo.it" target=
  2515. "_blank">Beppe Grillo</a> provided a quick demonstration about how
  2516. the Web concretely realizes the “six degrees of separation”. The
  2517. italian blogger, today a Web enthusiast, shown that it was possible
  2518. to him to get in contact with someone very famous using a couple of
  2519. different websites: <a href="http://www.imdb.com" target=
  2520. "_blank">imdb</a>, <a href="http://www.wikipedia.org" target=
  2521. "_blank">Wikipedia</a> and few others. Starting from a movie where
  2522. he acted, he could reach the movie producer and the producer could
  2523. be in contact with another actor due to previous work with this
  2524. latter and so on.&#160;</p>
  2525. <p>This demonstration consisted in a series of links that were
  2526. opened leading to some Web pages containing information where
  2527. extract the relationships that the showman wants to achieve.</p>
  2528. <p>This gig came back to my mind while I was thinking on how, what
  2529. I call <strong>the</strong> <a href="http://linkeddata.org/"
  2530. target="_blank"><strong>“Linked Data
  2531. Philosophy”</strong></a><strong>, is impacting on the traditional
  2532. Web and I imagined what Beppe Grillo could show
  2533. nowadays</strong>.</p>
  2534. <p style="text-align:center;"><em>Just the following, simple,
  2535. trivial and short SPARQL query:</em></p>
  2536. <p>construct {<br />
  2537. &#160;&#160; &#160;?actor1 foaf:knows ?actor2<br />
  2538. }<br />
  2539. &#160;&#160; &#160;where {<br />
  2540. &#160;&#160; &#160;?movie dbpprop:starring ?actor1.<br />
  2541. &#160;&#160; &#160;?movie dbpprop:starring ?actor2.<br />
  2542. &#160;&#160; &#160;?movie a dbpedia-owl:Film.<br />
  2543. &#160;&#160; &#160;FILTER(?actor1 = &lt;<a href=
  2544. "http://dbpedia.org/resource/Beppe_Grillo&amp;gt" rel=
  2545. "nofollow">http://dbpedia.org/resource/Beppe_Grillo&amp;gt</a>;)<br />
  2546.  
  2547. }</p>
  2548. <p>Although Beppe is a great comedian it may be hard also for him
  2549. making people laugh with this. But, the point here is not about
  2550. laughs but about data: in this sense, <strong>the Web of Data is
  2551. providing an outstanding and an extremely powerful way to access to
  2552. incredible twine of machine readable interlinked data</strong>.</p>
  2553. <p>Recently, another nice and remarkable italian initiative
  2554. appeared on the Web: <a href="http://parlamento.openpolis.it/"
  2555. target="_blank">OpenParlamento.it</a>. It’s, mainly, a service
  2556. where the Italian congressmen are displayed and they are positioned
  2557. on a chart basing on the similarity of their votes on law
  2558. proposals.</p>
  2559. <p style="text-align:center;"><em>Ok. Cool. But how the Semantic
  2560. Web could improve this stuff?</em></p>
  2561. <p>First of all, it would be very straightforward to provide a
  2562. SPARQL endpoint providing some good RDF for this data. Like the
  2563. following example:</p>
  2564. <p>&lt;rdf:RDF&gt;<br />
  2565. &#160;&#160; &#160;&lt;rdf:Description rdf:about=”<a href=
  2566. "http://openparlamento.it/senate/Mario_Rossi%E2%80%9D&amp;gt" rel=
  2567. "nofollow">http://openparlamento.it/senate/Mario_Rossi”&amp;gt</a>;<br />
  2568.  
  2569. &#160;&#160; &#160; &#160; &#160;&lt;rdf:type
  2570. rdf:resource=”<a href="http://openparlamento.it/ontology/Congressman%E2%80%9D/&amp;gt"
  2571. rel=
  2572. "nofollow">http://openparlamento.it/ontology/Congressman”/&amp;gt</a>;<br />
  2573.  
  2574. &#160;&#160; &#160; &#160; &#160;&lt;foaf:name&gt;Mario
  2575. Rossi&lt;/foaf:name&gt;<br />
  2576. &#160;&#160; &#160; &#160;
  2577. &#160;&lt;foaf:gender&gt;male&lt;/foaf:gender&gt;<br />
  2578. &#160;&#160; &#160; &#160; &#160;&lt;openp:politicalGroup<br />
  2579. &#160;&#160; &#160; &#160; &#160; &#160;
  2580. &#160;rdf:resource=”<a href=
  2581. "http://openparlamento.it/groups/Democratic_Party%E2%80%9D/&amp;gt"
  2582. rel=
  2583. "nofollow">http://openparlamento.it/groups/Democratic_Party”/&amp;gt</a>;<br />
  2584.  
  2585. &#160;&#160; &#160; &#160; &#160;&lt;owl:sameas
  2586. rdf:resource=”<a href=
  2587. "http://dbpedia.org/resource/Mario_Rossi%E2%80%9D/&amp;gt" rel=
  2588. "nofollow">http://dbpedia.org/resource/Mario_Rossi”/&amp;gt</a>;<br />
  2589.  
  2590. &#160;&#160; &#160;&lt;/rdf:Description&gt;<br />
  2591. &lt;/rdf:RDF&gt;</p>
  2592. <p>where names, descriptions, political belonging and more are
  2593. provided. Moreover a property called <em>openp:similarity</em>
  2594. could be used to map closer congressmen, using the same information
  2595. of the already cited chart.&#160;</p>
  2596. <p>Secondly, all the information about congressmen are published on
  2597. the official Italian chambers web site. Wrapping this data,
  2598. OpenParlamento.it could provide an extremely exhaustive set of
  2599. official information and, more important, links to <a href=
  2600. "http://dbpedia.org" target="_blank">DBpedia</a> will be the key to
  2601. get a full set of machine processable data also from other Linked
  2602. Data clouds.</p>
  2603. <p>How to benefits from all of this? <strong>Apart the fact of
  2604. employing a cutting-edge technology to syndicate data, everyone who
  2605. wants link the data provided by OpenParlamento.it on his web pages
  2606. can easily do it using RDFa.</strong></p>
  2607. <p>With these technologies as a basis, a new breed of applications
  2608. (like web crawlers, for those interested in SEO) will access and
  2609. process these data in a new, fashionable and extremely powerful
  2610. way.</p>
  2611. <p style="text-align:center;"><em>Is the time&#160;for those
  2612. guys&#160;to embrace the Semantic Web , isn’t it?</em></p>
  2613. </div>
  2614. </div>]]></content:encoded>
  2615.  <description>A couple of years ago, during his live show, the popular italian blogger and activist Beppe Grillo provided a quick demonstration about how the Web concretely realizes the “six degrees of separation”. The italian blogger, today a Web enthusiast, shown that it was possible to him to get in contact with someone very famous using a couple of different websites: imdb, Wikipedia and few others. Starting from a movie where he acted, he could reach the movie producer and the producer could be in contact with another actor due to previous work with this latter and so on.&amp;#160; This demonstration ...</description>
  2616. </item>
  2617. <item rdf:about="https://planb.nicecupoftea.org/2023/12/24/til-gifski/">
  2618.  <dc:creator>Libby Miller</dc:creator>
  2619.  <dc:source>Plan B by Libby Miller</dc:source>
  2620.  <dc:relation>http://planb.nicecupoftea.org/</dc:relation>
  2621.  <planet:content xmlns="http://www.w3.org/1999/xhtml" rdf:parseType="Literal">
  2622. <div>
  2623. <p>For a presentation at work where it’s tricky to add video but an
  2624. image is ok, <a href=
  2625. "https://github.com/ImageOptim/gifski/">gifski</a> worked
  2626. brilliantly for converting a video to a gif. Even with the defaults
  2627. it was fine. I needed to tweak it a bit as I needed it a bit
  2628. smaller, -W worked great for that for me, but there are a bunch of
  2629. other ways too.</p>
  2630. <figure class="wp-block-image size-large"><a href=
  2631. "https://libbymiller.files.wordpress.com/2023/12/example.gif"><img width="500"
  2632. height="281" data-attachment-id="3484" data-permalink=
  2633. "https://planb.nicecupoftea.org/2023/12/24/til-gifski/example/"
  2634. data-orig-file=
  2635. "https://libbymiller.files.wordpress.com/2023/12/example.gif"
  2636. data-orig-size="500,281" data-comments-opened="1" data-image-meta=
  2637. "{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}"
  2638. data-image-title="example" data-image-description=""
  2639. data-image-caption="" data-medium-file=
  2640. "https://libbymiller.files.wordpress.com/2023/12/example.gif?w=300"
  2641. data-large-file=
  2642. "https://libbymiller.files.wordpress.com/2023/12/example.gif?w=500"
  2643. src=
  2644. "https://libbymiller.files.wordpress.com/2023/12/example.gif?w=500"
  2645. alt="" class="wp-image-3484" srcset=
  2646. "https://libbymiller.files.wordpress.com/2023/12/example.gif 500w, https://libbymiller.files.wordpress.com/2023/12/example.gif?w=150 150w, https://libbymiller.files.wordpress.com/2023/12/example.gif?w=300 300w"
  2647. sizes="(max-width: 500px) 100vw, 500px" /></a></figure>
  2648. <p>Here’s one of the Montpelier partridge from January last
  2649. year.</p>
  2650. </div>
  2651. </planet:content>
  2652.  <dc:date rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2024-03-11T14:09:56.000000Z</dc:date>
  2653.  <title>TIL: Gifski</title>
  2654.  <link>https://planb.nicecupoftea.org/2023/12/24/til-gifski/</link>
  2655.  <content:encoded rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral"><![CDATA[
  2656. <div xmlns='http://www.w3.org/1999/xhtml'>
  2657. <div>
  2658. <p>For a presentation at work where it’s tricky to add video but an
  2659. image is ok, <a href=
  2660. "https://github.com/ImageOptim/gifski/">gifski</a> worked
  2661. brilliantly for converting a video to a gif. Even with the defaults
  2662. it was fine. I needed to tweak it a bit as I needed it a bit
  2663. smaller, -W worked great for that for me, but there are a bunch of
  2664. other ways too.</p>
  2665. <figure class="wp-block-image size-large"><a href=
  2666. "https://libbymiller.files.wordpress.com/2023/12/example.gif"><img width="500"
  2667. height="281" data-attachment-id="3484" data-permalink=
  2668. "https://planb.nicecupoftea.org/2023/12/24/til-gifski/example/"
  2669. data-orig-file=
  2670. "https://libbymiller.files.wordpress.com/2023/12/example.gif"
  2671. data-orig-size="500,281" data-comments-opened="1" data-image-meta=
  2672. "{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}"
  2673. data-image-title="example" data-image-description=""
  2674. data-image-caption="" data-medium-file=
  2675. "https://libbymiller.files.wordpress.com/2023/12/example.gif?w=300"
  2676. data-large-file=
  2677. "https://libbymiller.files.wordpress.com/2023/12/example.gif?w=500"
  2678. src=
  2679. "https://libbymiller.files.wordpress.com/2023/12/example.gif?w=500"
  2680. alt="" class="wp-image-3484" srcset=
  2681. "https://libbymiller.files.wordpress.com/2023/12/example.gif 500w, https://libbymiller.files.wordpress.com/2023/12/example.gif?w=150 150w, https://libbymiller.files.wordpress.com/2023/12/example.gif?w=300 300w"
  2682. sizes="(max-width: 500px) 100vw, 500px" /></a></figure>
  2683. <p>Here’s one of the Montpelier partridge from January last
  2684. year.</p>
  2685. </div>
  2686. </div>]]></content:encoded>
  2687.  <description>
  2688. For a presentation at work where it’s tricky to add video but an
  2689. image is ok,  gifski  worked
  2690. brilliantly for converting a video to a gif. Even with the defaults
  2691. it was fine. I needed to tweak it a bit as I needed it a bit
  2692. smaller, -W worked great for that for me, but there are a bunch of
  2693. other ways too.
  2694.    
  2695. Here’s one of the Montpelier partridge from January last
  2696. year.
  2697. </description>
  2698. </item>
  2699. <item rdf:about="https://planb.nicecupoftea.org/2023/05/04/mayke-day-4-ttn-and-lorawan-til/">
  2700.  <dc:creator>Libby Miller</dc:creator>
  2701.  <dc:source>Plan B by Libby Miller</dc:source>
  2702.  <dc:relation>http://planb.nicecupoftea.org/</dc:relation>
  2703.  <planet:content xmlns="http://www.w3.org/1999/xhtml" rdf:parseType="Literal">
  2704. <div>
  2705. <p><a href=
  2706. "https://www.watershed.co.uk/studio/residents/tarim/">Tarim</a> and
  2707. I have been trying to get a LoRaWAN network up and running in
  2708. Bristol using some of the old <a href=
  2709. "https://www.bristolwireless.net">Bristol Wireless</a> antenna
  2710. locations. First step for me was in January when we got together
  2711. and tried to get a Raspberry Pi Gateway working, with so much
  2712. #fayle – a subtly broken Pi, a dodgy PSU connector, and I did not
  2713. know that the <a href=
  2714. "https://www.raspberrypi.com/software/">Raspberry Pi imager</a>
  2715. process had changed for Bullseye (you have to set a user in
  2716. settings, and enable ssh there – you can also put the wifi details
  2717. in, so it’s handy if you know about it).</p>
  2718. <p>Aaanyway for #<a href=
  2719. "https://mastodon.me.uk/@libbymiller/110293403268784344">mayke</a>
  2720. (now on Mastodon) I’ve been trying for a couple of days to get a
  2721. TTGO LoRa32 OLED v1.3(?) I bought ages ago to work with the Pi
  2722. gateway. In summary: argh. there’s so many partial examples around
  2723. and different naming things and allsorts. But are some notes on
  2724. what works.</p>
  2725. <p>On the <strong>Raspberry Pi</strong>: 3B+ and a <a href=
  2726. "https://lora-alliance.org/lora_products/ic880a-lora-concentrator/">
  2727. IC880A</a> board that Tarim had – then install Bullseye (with ssh
  2728. access and wifi and a pi user) and then install using <a href=
  2729. "https://www.thethingsnetwork.org/">The Things Network</a> (TTN)’s
  2730. example gateway <a href=
  2731. "https://www.thethingsindustries.com/docs/gateways/models/raspberry-pi/">
  2732. instructions</a>. All fine. My only daftness here was finding this
  2733. command: <code>/opt/ttn-station/bin/station -p</code> and assuming
  2734. (why?) that I was tailing the logs instead of running another
  2735. instance on top of the systemctl one. Which led to all sorts of
  2736. weird errors, including ones related to not resetting the device
  2737. e.g.</p>
  2738. <p><code>[lgw_receive:1143] CONCENTRATOR IS NOT RUNNING, START IT
  2739. BEFORE RECEIVING</code></p>
  2740. <p>…</p>
  2741. <p>&#160;<code>[HAL:INFO] [lgw_spi_close:159] Note: SPI port
  2742. closed</code></p>
  2743. <p>…</p>
  2744. <p><code>[lgw_start:764] Failed to setup sx125x radio for RF chain
  2745. 0</code></p>
  2746. <p>etc.</p>
  2747. <p>D’oh.</p>
  2748. <p>The <strong>TTGO</strong> was more tricky. There seem to be
  2749. multiple libraries at multiple levels of abstraction and I wanted
  2750. one that was Arduino-IDE compatible. It’s really hard to find out
  2751. what pin mapping you need for these slightly obscure (and
  2752. superceded) TTGO boards. Then there’s the difference between
  2753. LoRaWAN Specification 1.0.3 and LoRaWAN Specification 1.1.1. After
  2754. a while I realised that the <a href=
  2755. "https://github.com/mcci-catena/arduino-lorawan/">MCCI_LoRaWAN_LMIC_library</a>
  2756. (0.9.2) I was using in the code I had found on the internet was
  2757. made for <strong>1.0.3</strong> – and then configuring a TTN device
  2758. was muuch easier with fewer baffling options.</p>
  2759. <p>One final self-own by my frenetic searching of forums looking
  2760. for a bit of code with the right pin mapping for the TTGO</p>
  2761. <p>I somehow found some old code (I think it was <a href=
  2762. "https://github.com/fcgdam/TTGO_LoRa32/blob/master/TTN_TTGOLora32_OTAA/src/main.cpp">
  2763. this</a> – don’t use it, 5 years’ old! – which I think is based on
  2764. an old version of <a href=
  2765. "https://github.com/gonzalocasas/arduino-uno-dragino-lorawan/blob/master/send-sensor-data/send-sensor-data.ino">
  2766. this</a>, but adapted for the TTGO) which didn’t recognise all the
  2767. event types from TTN. Updated below, basically adding this in
  2768. <code>setup()</code><br />
  2769. <code>LMIC_setAdrMode(1);<br />
  2770. LMIC_setLinkCheckMode(1);</code><br />
  2771. in <code>setup()</code><br />
  2772. and <code>LMIC_setLinkCheckMode(1)</code> again in <code>case
  2773. EV_JOINED</code>.<code><br /></code>Thank you <a href=
  2774. "https://www.thethingsnetwork.org/forum/t/lmic-unknown-event-20/42647/11">
  2775. TTN forum users</a>, and <a href=
  2776. "https://www.thethingsnetwork.org/forum/t/heltec-wifi-lora-v2-compilation-error-due-to-missing-constant-declaration/39382/4">
  2777. again</a>.</p>
  2778. <p>A couple more things – though there are probably more I’ve
  2779. forgotten.</p>
  2780. <ol>
  2781. <li>The gateway was ok to set up on the <a href=
  2782. "https://console.cloud.thethings.network">TTN console</a>, but
  2783. setting up devices was not – all the names for the different device
  2784. ids were completely baffling and seem to have changed over time.
  2785. You also need to set up an application before you can add a device.
  2786. Two key learnings (a) you can get the little / big endian -ness and
  2787. the right format for the ids by clicking on the ids themselves in
  2788. the console, see image below and (b) the Gateway has the JoinEUI
  2789. you need to set up a device (check the Gateway’s messages for this,
  2790. see image below).</li>
  2791. <li>You HAVE TO hand edit
  2792. <code>./project_config/lmic_project_config.h</code> in <a href=
  2793. "https://github.com/mcci-catena/arduino-lorawan/">MCCI_LoRaWAN_LMIC_library</a>
  2794. on your machine to pick the right region (on a mac, mine was in
  2795. <code>/Users/[me]/Documents/Arduino/libraries/MCCI_LoRaWAN_LMIC_library/project_config/lmic_project_config.h</code>)</li>
  2796. </ol>
  2797. <h4 class="wp-block-heading"><strong>Formatting endianness</strong>
  2798. and chars</h4>
  2799. <p>LSB is little- MSB is big- and &lt;&gt; switches between chars
  2800. with the preceding 0x business and without. DEVEUI and APPEUI are
  2801. little and APPKEY is big.</p>
  2802. <figure class="wp-block-image size-large"><a href=
  2803. "https://libbymiller.files.wordpress.com/2023/05/screenshot-2023-05-04-at-21.51.10-1.png">
  2804. <img width="1024" height="145" data-attachment-id="3473"
  2805. data-permalink=
  2806. "https://planb.nicecupoftea.org/2023/05/04/mayke-day-4-ttn-and-lorawan-til/screenshot-2023-05-04-at-21-51-10-1/"
  2807. data-orig-file=
  2808. "https://libbymiller.files.wordpress.com/2023/05/screenshot-2023-05-04-at-21.51.10-1.png"
  2809. data-orig-size="1104,157" data-comments-opened="1" data-image-meta=
  2810. "{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}"
  2811. data-image-title="screenshot-2023-05-04-at-21.51.10-1"
  2812. data-image-description="" data-image-caption="" data-medium-file=
  2813. "https://libbymiller.files.wordpress.com/2023/05/screenshot-2023-05-04-at-21.51.10-1.png?w=300"
  2814. data-large-file=
  2815. "https://libbymiller.files.wordpress.com/2023/05/screenshot-2023-05-04-at-21.51.10-1.png?w=1024"
  2816. src=
  2817. "https://libbymiller.files.wordpress.com/2023/05/screenshot-2023-05-04-at-21.51.10-1.png?w=1024"
  2818. alt="" class="wp-image-3473" srcset=
  2819. "https://libbymiller.files.wordpress.com/2023/05/screenshot-2023-05-04-at-21.51.10-1.png?w=1024 1024w, https://libbymiller.files.wordpress.com/2023/05/screenshot-2023-05-04-at-21.51.10-1.png?w=1020 1020w, https://libbymiller.files.wordpress.com/2023/05/screenshot-2023-05-04-at-21.51.10-1.png?w=150 150w, https://libbymiller.files.wordpress.com/2023/05/screenshot-2023-05-04-at-21.51.10-1.png?w=300 300w, https://libbymiller.files.wordpress.com/2023/05/screenshot-2023-05-04-at-21.51.10-1.png?w=768 768w, https://libbymiller.files.wordpress.com/2023/05/screenshot-2023-05-04-at-21.51.10-1.png 1104w"
  2820. sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>
  2821. <h4 class="wp-block-heading">JoinEUI for devices is in the gateway
  2822. messages like this:</h4>
  2823. <figure class="wp-block-image size-large"><a href=
  2824. "https://libbymiller.files.wordpress.com/2023/05/screenshot-2023-05-04-at-21.54.44.png">
  2825. <img width="1024" height="134" data-attachment-id="3475"
  2826. data-permalink=
  2827. "https://planb.nicecupoftea.org/2023/05/04/mayke-day-4-ttn-and-lorawan-til/screenshot-2023-05-04-at-21-54-44/"
  2828. data-orig-file=
  2829. "https://libbymiller.files.wordpress.com/2023/05/screenshot-2023-05-04-at-21.54.44.png"
  2830. data-orig-size="1947,256" data-comments-opened="1" data-image-meta=
  2831. "{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}"
  2832. data-image-title="screenshot-2023-05-04-at-21.54.44"
  2833. data-image-description="" data-image-caption="" data-medium-file=
  2834. "https://libbymiller.files.wordpress.com/2023/05/screenshot-2023-05-04-at-21.54.44.png?w=300"
  2835. data-large-file=
  2836. "https://libbymiller.files.wordpress.com/2023/05/screenshot-2023-05-04-at-21.54.44.png?w=1024"
  2837. src=
  2838. "https://libbymiller.files.wordpress.com/2023/05/screenshot-2023-05-04-at-21.54.44.png?w=1024"
  2839. alt="" class="wp-image-3475" srcset=
  2840. "https://libbymiller.files.wordpress.com/2023/05/screenshot-2023-05-04-at-21.54.44.png?w=1024 1024w, https://libbymiller.files.wordpress.com/2023/05/screenshot-2023-05-04-at-21.54.44.png?w=1019 1019w, https://libbymiller.files.wordpress.com/2023/05/screenshot-2023-05-04-at-21.54.44.png?w=150 150w, https://libbymiller.files.wordpress.com/2023/05/screenshot-2023-05-04-at-21.54.44.png?w=300 300w, https://libbymiller.files.wordpress.com/2023/05/screenshot-2023-05-04-at-21.54.44.png?w=768 768w, https://libbymiller.files.wordpress.com/2023/05/screenshot-2023-05-04-at-21.54.44.png 1947w"
  2841. sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>
  2842. <p>I somewhat enjoyed the detective work and even read some of
  2843. <a href=
  2844. "https://www.thethingsindustries.com/docs/getting-started/">TFM</a>.
  2845. So a happy #mayke for me.</p>
  2846. <p>The final code I used:</p>
  2847. <pre class="wp-block-code"><code>// MIT License
  2848. // https://github.com/gonzalocasas/arduino-uno-dragino-lorawan/blob/master/LICENSE
  2849. // Based on examples from https://github.com/matthijskooijman/arduino-lmic
  2850. // Copyright (c) 2015 Thomas Telkamp and Matthijs Kooijman
  2851.  
  2852. #include &lt;Arduino.h&gt;
  2853. #include "lmic.h"
  2854. #include &lt;hal/hal.h&gt;
  2855. #include &lt;SPI.h&gt;
  2856.  
  2857. #define LEDPIN 2
  2858.  
  2859.  
  2860. unsigned int counter = 0;
  2861. char TTN_response[30];
  2862.  
  2863. // This EUI must be in little-endian format, so least-significant-byte
  2864. // first. When copying an EUI from ttnctl output, this means to reverse
  2865. // the bytes.
  2866.  
  2867. // Copy the value from Device EUI from the TTN console in LSB mode.
  2868. static const u1_t PROGMEM DEVEUI[8]= { 0x.., 0x.., .. };
  2869. void os_getDevEui (u1_t* buf) { memcpy_P(buf, DEVEUI, 8);}
  2870.  
  2871. // Copy the value from Application EUI from the TTN console in LSB mode
  2872. static const u1_t PROGMEM APPEUI[8]= { 0x.., 0x.., .. };
  2873. void os_getArtEui (u1_t* buf) { memcpy_P(buf, APPEUI, 8);}
  2874.  
  2875. // This key should be in big endian format (or, since it is not really a
  2876. // number but a block of memory, endianness does not really apply). In
  2877. // practice, a key taken from ttnctl can be copied as-is. Anyway its in MSB mode.
  2878. static const u1_t PROGMEM APPKEY[16] = { 0x.., .. };
  2879. void os_getDevKey (u1_t* buf) { memcpy_P(buf, APPKEY, 16);}
  2880.  
  2881. static osjob_t sendjob;
  2882.  
  2883. // Schedule TX every this many seconds (might become longer due to duty
  2884. // cycle limitations).
  2885. const unsigned TX_INTERVAL = 120;
  2886.  
  2887. // Pin mapping
  2888. const lmic_pinmap lmic_pins = {
  2889.    .nss = 18,
  2890.    .rxtx = LMIC_UNUSED_PIN,
  2891.    .rst = 14,
  2892.    .dio = {26, 33, 32}  // Pins for the Heltec ESP32 Lora board/ TTGO Lora32 with 3D metal antenna
  2893. };
  2894.  
  2895. void do_send(osjob_t* j){
  2896.    // Payload to send (uplink)
  2897.    static uint8_t message[] = "Hello OTAA!";
  2898.  
  2899.    // Check if there is not a current TX/RX job running
  2900.    if (LMIC.opmode &amp; OP_TXRXPEND) {
  2901.        Serial.println(F("OP_TXRXPEND, not sending"));
  2902.    } else {
  2903.        // Prepare upstream data transmission at the next possible time.
  2904.        LMIC_setTxData2(1, message, sizeof(message)-1, 0);
  2905.        Serial.println(F("Sending uplink packet..."));
  2906.        digitalWrite(LEDPIN, HIGH);
  2907.    }
  2908.    // Next TX is scheduled after TX_COMPLETE event.
  2909. }
  2910.  
  2911. void onEvent (ev_t ev) {
  2912.    Serial.print(os_getTime());
  2913.    Serial.print(": ");
  2914.    Serial.print(ev);
  2915.    Serial.print(": ");
  2916.    switch(ev) {
  2917.        case EV_SCAN_TIMEOUT:
  2918.            Serial.println(F("EV_SCAN_TIMEOUT"));
  2919.            break;
  2920.        case EV_BEACON_FOUND:
  2921.            Serial.println(F("EV_BEACON_FOUND"));
  2922.            break;
  2923.        case EV_BEACON_MISSED:
  2924.            Serial.println(F("EV_BEACON_MISSED"));
  2925.            break;
  2926.        case EV_BEACON_TRACKED:
  2927.            Serial.println(F("EV_BEACON_TRACKED"));
  2928.            break;
  2929.        case EV_JOIN_FAILED:
  2930.            Serial.println(F("EV_JOIN_FAILED"));
  2931.            break;
  2932.        case EV_REJOIN_FAILED:
  2933.            Serial.println(F("EV_REJOIN_FAILED"));
  2934.            break;
  2935.        case EV_LOST_TSYNC:
  2936.            Serial.println(F("EV_LOST_TSYNC"));
  2937.            break;
  2938.        case EV_RESET:
  2939.            Serial.println(F("EV_RESET"));
  2940.            break;
  2941.        case EV_RXCOMPLETE:
  2942.            // data received in ping slot
  2943.            Serial.println(F("EV_RXCOMPLETE"));
  2944.            break;
  2945.        case EV_LINK_DEAD:
  2946.            Serial.println(F("EV_LINK_DEAD"));
  2947.            break;
  2948.        case EV_LINK_ALIVE:
  2949.            Serial.println(F("EV_LINK_ALIVE"));
  2950.            break;
  2951.  
  2952.        case EV_SCAN_FOUND:
  2953.            Serial.println(F("EV_SCAN_FOUND"));
  2954.            break;
  2955.        
  2956.        case EV_TXSTART:
  2957.            Serial.println(F("EV_TXSTART"));
  2958.            break;
  2959.        case EV_TXCANCELED:
  2960.            Serial.println(F("EV_TXCANCELED"));
  2961.            break;
  2962.        case EV_RXSTART:
  2963.            // do not print anything -- it wrecks timing
  2964.            break;
  2965.  
  2966.        case EV_TXCOMPLETE:
  2967.            Serial.println(F("EV_TXCOMPLETE (includes waiting for RX windows)"));
  2968.  
  2969.            if (LMIC.txrxFlags &amp; TXRX_ACK) {
  2970.              Serial.println(F("Received ack"));
  2971.            }
  2972.  
  2973.            if (LMIC.dataLen) {
  2974.              int i = 0;
  2975.              Serial.print(F("Data Received: "));
  2976.              Serial.write(LMIC.frame+LMIC.dataBeg, LMIC.dataLen);
  2977.              Serial.println();
  2978.              Serial.println(LMIC.rssi);
  2979.  
  2980.              for ( i = 0 ; i &lt; LMIC.dataLen ; i++ )
  2981.                TTN_response[i] = LMIC.frame[LMIC.dataBeg+i];
  2982.              TTN_response[i] = 0;
  2983.  
  2984.            }
  2985.  
  2986.            // Schedule next transmission
  2987.            os_setTimedCallback(&amp;sendjob, os_getTime()+sec2osticks(TX_INTERVAL), do_send);
  2988.            digitalWrite(LEDPIN, LOW);
  2989.  
  2990.            // Schedule next transmission
  2991.            os_setTimedCallback(&amp;sendjob, os_getTime()+sec2osticks(TX_INTERVAL), do_send);
  2992.            break;
  2993.        case EV_JOINING:
  2994.            Serial.println(F("EV_JOINING: -&gt; Joining..."));
  2995.  
  2996.            break;
  2997.        case EV_JOINED: {
  2998.              Serial.println(F("EV_JOINED"));
  2999.  
  3000.              LMIC_setLinkCheckMode(1);
  3001.            }
  3002.            break;
  3003.  
  3004.        default:
  3005.            Serial.println(F("Unknown event"));
  3006.            Serial.print(ev);
  3007.            Serial.print("\n");
  3008.            break;
  3009.    }
  3010.  
  3011. }
  3012.  
  3013. void setup() {
  3014.    Serial.begin(115200);
  3015.    delay(2500);                      // Give time to the serial monitor to pick up
  3016.    Serial.println(F("Starting..."));
  3017.  
  3018.    // Use the Blue pin to signal transmission.
  3019.    pinMode(LEDPIN,OUTPUT);
  3020.  
  3021.    // LMIC init
  3022.    os_init();
  3023.  
  3024.    // Reset the MAC state. Session and pending data transfers will be discarded.
  3025.    LMIC_reset();
  3026.    LMIC_setClockError(MAX_CLOCK_ERROR * 1 / 100);
  3027.    // Set up the channels used by the Things Network, which corresponds
  3028.    // to the defaults of most gateways. Without this, only three base
  3029.    // channels from the LoRaWAN specification are used, which certainly
  3030.    // works, so it is good for debugging, but can overload those
  3031.    // frequencies, so be sure to configure the full frequency range of
  3032.    // your network here (unless your network autoconfigures them).
  3033.    // Setting up channels should happen after LMIC_setSession, as that
  3034.    // configures the minimal channel set.
  3035.  
  3036.    LMIC_setupChannel(0, 868100000, DR_RANGE_MAP(DR_SF12, DR_SF7),  BAND_CENTI);      // g-band
  3037.    LMIC_setupChannel(1, 868300000, DR_RANGE_MAP(DR_SF11, DR_SF7B), BAND_CENTI);      // g-band
  3038.    LMIC_setupChannel(2, 868500000, DR_RANGE_MAP(DR_SF10, DR_SF7),  BAND_CENTI);      // g-band
  3039.    LMIC_setupChannel(3, 867100000, DR_RANGE_MAP(DR_SF9, DR_SF7),  BAND_CENTI);      // g-band
  3040.    LMIC_setupChannel(4, 867300000, DR_RANGE_MAP(DR_SF8, DR_SF7),  BAND_CENTI);      // g-band
  3041.    LMIC_setupChannel(5, 867500000, DR_RANGE_MAP(DR_SF7, DR_SF7),  BAND_CENTI);      // g-band
  3042.    LMIC_setupChannel(6, 867700000, DR_RANGE_MAP(DR_SF7, DR_SF7),  BAND_CENTI);      // g-band
  3043.  
  3044.    
  3045.    // TTN defines an additional channel at 869.525Mhz using SF9 for class B
  3046.    // devices' ping slots. LMIC does not have an easy way to define set this
  3047.    // frequency and support for class B is spotty and untested, so this
  3048.    // frequency is not configured here.
  3049.  
  3050.    // Disable link check validation
  3051.    ///LMIC_setLinkCheckMode(0);
  3052.    LMIC_setAdrMode(1);
  3053.    LMIC_setLinkCheckMode(1);
  3054.    //LMIC_setClockError(MAX_CLOCK_ERROR * 1 / 100);
  3055.  
  3056.    // TTN uses SF9 for its RX2 window.
  3057.    LMIC.dn2Dr = DR_SF9;
  3058.  
  3059.    // Set data rate and transmit power for uplink (note: txpow seems to be ignored by the library)
  3060.    //LMIC_setDrTxpow(DR_SF11,14);
  3061.    LMIC_setDrTxpow(DR_SF9,14);
  3062.  
  3063.    // Start job
  3064.    do_send(&amp;sendjob);     // Will fire up also the join
  3065. }
  3066.  
  3067. void loop() {
  3068.    os_runloop_once();
  3069. }</code></pre></div>
  3070. </planet:content>
  3071.  <dc:date rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2024-03-11T14:09:56.000000Z</dc:date>
  3072.  <title>#Mayke Day 4 – TTN and LoRaWAN – TiL</title>
  3073.  <link>https://planb.nicecupoftea.org/2023/05/04/mayke-day-4-ttn-and-lorawan-til/</link>
  3074.  <content:encoded rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral"><![CDATA[
  3075. <div xmlns='http://www.w3.org/1999/xhtml'>
  3076. <div>
  3077. <p><a href=
  3078. "https://www.watershed.co.uk/studio/residents/tarim/">Tarim</a> and
  3079. I have been trying to get a LoRaWAN network up and running in
  3080. Bristol using some of the old <a href=
  3081. "https://www.bristolwireless.net">Bristol Wireless</a> antenna
  3082. locations. First step for me was in January when we got together
  3083. and tried to get a Raspberry Pi Gateway working, with so much
  3084. #fayle – a subtly broken Pi, a dodgy PSU connector, and I did not
  3085. know that the <a href=
  3086. "https://www.raspberrypi.com/software/">Raspberry Pi imager</a>
  3087. process had changed for Bullseye (you have to set a user in
  3088. settings, and enable ssh there – you can also put the wifi details
  3089. in, so it’s handy if you know about it).</p>
  3090. <p>Aaanyway for #<a href=
  3091. "https://mastodon.me.uk/@libbymiller/110293403268784344">mayke</a>
  3092. (now on Mastodon) I’ve been trying for a couple of days to get a
  3093. TTGO LoRa32 OLED v1.3(?) I bought ages ago to work with the Pi
  3094. gateway. In summary: argh. there’s so many partial examples around
  3095. and different naming things and allsorts. But are some notes on
  3096. what works.</p>
  3097. <p>On the <strong>Raspberry Pi</strong>: 3B+ and a <a href=
  3098. "https://lora-alliance.org/lora_products/ic880a-lora-concentrator/">
  3099. IC880A</a> board that Tarim had – then install Bullseye (with ssh
  3100. access and wifi and a pi user) and then install using <a href=
  3101. "https://www.thethingsnetwork.org/">The Things Network</a> (TTN)’s
  3102. example gateway <a href=
  3103. "https://www.thethingsindustries.com/docs/gateways/models/raspberry-pi/">
  3104. instructions</a>. All fine. My only daftness here was finding this
  3105. command: <code>/opt/ttn-station/bin/station -p</code> and assuming
  3106. (why?) that I was tailing the logs instead of running another
  3107. instance on top of the systemctl one. Which led to all sorts of
  3108. weird errors, including ones related to not resetting the device
  3109. e.g.</p>
  3110. <p><code>[lgw_receive:1143] CONCENTRATOR IS NOT RUNNING, START IT
  3111. BEFORE RECEIVING</code></p>
  3112. <p>…</p>
  3113. <p>&#160;<code>[HAL:INFO] [lgw_spi_close:159] Note: SPI port
  3114. closed</code></p>
  3115. <p>…</p>
  3116. <p><code>[lgw_start:764] Failed to setup sx125x radio for RF chain
  3117. 0</code></p>
  3118. <p>etc.</p>
  3119. <p>D’oh.</p>
  3120. <p>The <strong>TTGO</strong> was more tricky. There seem to be
  3121. multiple libraries at multiple levels of abstraction and I wanted
  3122. one that was Arduino-IDE compatible. It’s really hard to find out
  3123. what pin mapping you need for these slightly obscure (and
  3124. superceded) TTGO boards. Then there’s the difference between
  3125. LoRaWAN Specification 1.0.3 and LoRaWAN Specification 1.1.1. After
  3126. a while I realised that the <a href=
  3127. "https://github.com/mcci-catena/arduino-lorawan/">MCCI_LoRaWAN_LMIC_library</a>
  3128. (0.9.2) I was using in the code I had found on the internet was
  3129. made for <strong>1.0.3</strong> – and then configuring a TTN device
  3130. was muuch easier with fewer baffling options.</p>
  3131. <p>One final self-own by my frenetic searching of forums looking
  3132. for a bit of code with the right pin mapping for the TTGO</p>
  3133. <p>I somehow found some old code (I think it was <a href=
  3134. "https://github.com/fcgdam/TTGO_LoRa32/blob/master/TTN_TTGOLora32_OTAA/src/main.cpp">
  3135. this</a> – don’t use it, 5 years’ old! – which I think is based on
  3136. an old version of <a href=
  3137. "https://github.com/gonzalocasas/arduino-uno-dragino-lorawan/blob/master/send-sensor-data/send-sensor-data.ino">
  3138. this</a>, but adapted for the TTGO) which didn’t recognise all the
  3139. event types from TTN. Updated below, basically adding this in
  3140. <code>setup()</code><br />
  3141. <code>LMIC_setAdrMode(1);<br />
  3142. LMIC_setLinkCheckMode(1);</code><br />
  3143. in <code>setup()</code><br />
  3144. and <code>LMIC_setLinkCheckMode(1)</code> again in <code>case
  3145. EV_JOINED</code>.<code><br /></code>Thank you <a href=
  3146. "https://www.thethingsnetwork.org/forum/t/lmic-unknown-event-20/42647/11">
  3147. TTN forum users</a>, and <a href=
  3148. "https://www.thethingsnetwork.org/forum/t/heltec-wifi-lora-v2-compilation-error-due-to-missing-constant-declaration/39382/4">
  3149. again</a>.</p>
  3150. <p>A couple more things – though there are probably more I’ve
  3151. forgotten.</p>
  3152. <ol>
  3153. <li>The gateway was ok to set up on the <a href=
  3154. "https://console.cloud.thethings.network">TTN console</a>, but
  3155. setting up devices was not – all the names for the different device
  3156. ids were completely baffling and seem to have changed over time.
  3157. You also need to set up an application before you can add a device.
  3158. Two key learnings (a) you can get the little / big endian -ness and
  3159. the right format for the ids by clicking on the ids themselves in
  3160. the console, see image below and (b) the Gateway has the JoinEUI
  3161. you need to set up a device (check the Gateway’s messages for this,
  3162. see image below).</li>
  3163. <li>You HAVE TO hand edit
  3164. <code>./project_config/lmic_project_config.h</code> in <a href=
  3165. "https://github.com/mcci-catena/arduino-lorawan/">MCCI_LoRaWAN_LMIC_library</a>
  3166. on your machine to pick the right region (on a mac, mine was in
  3167. <code>/Users/[me]/Documents/Arduino/libraries/MCCI_LoRaWAN_LMIC_library/project_config/lmic_project_config.h</code>)</li>
  3168. </ol>
  3169. <h4 class="wp-block-heading"><strong>Formatting endianness</strong>
  3170. and chars</h4>
  3171. <p>LSB is little- MSB is big- and &lt;&gt; switches between chars
  3172. with the preceding 0x business and without. DEVEUI and APPEUI are
  3173. little and APPKEY is big.</p>
  3174. <figure class="wp-block-image size-large"><a href=
  3175. "https://libbymiller.files.wordpress.com/2023/05/screenshot-2023-05-04-at-21.51.10-1.png">
  3176. <img width="1024" height="145" data-attachment-id="3473"
  3177. data-permalink=
  3178. "https://planb.nicecupoftea.org/2023/05/04/mayke-day-4-ttn-and-lorawan-til/screenshot-2023-05-04-at-21-51-10-1/"
  3179. data-orig-file=
  3180. "https://libbymiller.files.wordpress.com/2023/05/screenshot-2023-05-04-at-21.51.10-1.png"
  3181. data-orig-size="1104,157" data-comments-opened="1" data-image-meta=
  3182. "{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}"
  3183. data-image-title="screenshot-2023-05-04-at-21.51.10-1"
  3184. data-image-description="" data-image-caption="" data-medium-file=
  3185. "https://libbymiller.files.wordpress.com/2023/05/screenshot-2023-05-04-at-21.51.10-1.png?w=300"
  3186. data-large-file=
  3187. "https://libbymiller.files.wordpress.com/2023/05/screenshot-2023-05-04-at-21.51.10-1.png?w=1024"
  3188. src=
  3189. "https://libbymiller.files.wordpress.com/2023/05/screenshot-2023-05-04-at-21.51.10-1.png?w=1024"
  3190. alt="" class="wp-image-3473" srcset=
  3191. "https://libbymiller.files.wordpress.com/2023/05/screenshot-2023-05-04-at-21.51.10-1.png?w=1024 1024w, https://libbymiller.files.wordpress.com/2023/05/screenshot-2023-05-04-at-21.51.10-1.png?w=1020 1020w, https://libbymiller.files.wordpress.com/2023/05/screenshot-2023-05-04-at-21.51.10-1.png?w=150 150w, https://libbymiller.files.wordpress.com/2023/05/screenshot-2023-05-04-at-21.51.10-1.png?w=300 300w, https://libbymiller.files.wordpress.com/2023/05/screenshot-2023-05-04-at-21.51.10-1.png?w=768 768w, https://libbymiller.files.wordpress.com/2023/05/screenshot-2023-05-04-at-21.51.10-1.png 1104w"
  3192. sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>
  3193. <h4 class="wp-block-heading">JoinEUI for devices is in the gateway
  3194. messages like this:</h4>
  3195. <figure class="wp-block-image size-large"><a href=
  3196. "https://libbymiller.files.wordpress.com/2023/05/screenshot-2023-05-04-at-21.54.44.png">
  3197. <img width="1024" height="134" data-attachment-id="3475"
  3198. data-permalink=
  3199. "https://planb.nicecupoftea.org/2023/05/04/mayke-day-4-ttn-and-lorawan-til/screenshot-2023-05-04-at-21-54-44/"
  3200. data-orig-file=
  3201. "https://libbymiller.files.wordpress.com/2023/05/screenshot-2023-05-04-at-21.54.44.png"
  3202. data-orig-size="1947,256" data-comments-opened="1" data-image-meta=
  3203. "{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}"
  3204. data-image-title="screenshot-2023-05-04-at-21.54.44"
  3205. data-image-description="" data-image-caption="" data-medium-file=
  3206. "https://libbymiller.files.wordpress.com/2023/05/screenshot-2023-05-04-at-21.54.44.png?w=300"
  3207. data-large-file=
  3208. "https://libbymiller.files.wordpress.com/2023/05/screenshot-2023-05-04-at-21.54.44.png?w=1024"
  3209. src=
  3210. "https://libbymiller.files.wordpress.com/2023/05/screenshot-2023-05-04-at-21.54.44.png?w=1024"
  3211. alt="" class="wp-image-3475" srcset=
  3212. "https://libbymiller.files.wordpress.com/2023/05/screenshot-2023-05-04-at-21.54.44.png?w=1024 1024w, https://libbymiller.files.wordpress.com/2023/05/screenshot-2023-05-04-at-21.54.44.png?w=1019 1019w, https://libbymiller.files.wordpress.com/2023/05/screenshot-2023-05-04-at-21.54.44.png?w=150 150w, https://libbymiller.files.wordpress.com/2023/05/screenshot-2023-05-04-at-21.54.44.png?w=300 300w, https://libbymiller.files.wordpress.com/2023/05/screenshot-2023-05-04-at-21.54.44.png?w=768 768w, https://libbymiller.files.wordpress.com/2023/05/screenshot-2023-05-04-at-21.54.44.png 1947w"
  3213. sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>
  3214. <p>I somewhat enjoyed the detective work and even read some of
  3215. <a href=
  3216. "https://www.thethingsindustries.com/docs/getting-started/">TFM</a>.
  3217. So a happy #mayke for me.</p>
  3218. <p>The final code I used:</p>
  3219. <pre class="wp-block-code"><code>// MIT License
  3220. // https://github.com/gonzalocasas/arduino-uno-dragino-lorawan/blob/master/LICENSE
  3221. // Based on examples from https://github.com/matthijskooijman/arduino-lmic
  3222. // Copyright (c) 2015 Thomas Telkamp and Matthijs Kooijman
  3223.  
  3224. #include &lt;Arduino.h&gt;
  3225. #include "lmic.h"
  3226. #include &lt;hal/hal.h&gt;
  3227. #include &lt;SPI.h&gt;
  3228.  
  3229. #define LEDPIN 2
  3230.  
  3231.  
  3232. unsigned int counter = 0;
  3233. char TTN_response[30];
  3234.  
  3235. // This EUI must be in little-endian format, so least-significant-byte
  3236. // first. When copying an EUI from ttnctl output, this means to reverse
  3237. // the bytes.
  3238.  
  3239. // Copy the value from Device EUI from the TTN console in LSB mode.
  3240. static const u1_t PROGMEM DEVEUI[8]= { 0x.., 0x.., .. };
  3241. void os_getDevEui (u1_t* buf) { memcpy_P(buf, DEVEUI, 8);}
  3242.  
  3243. // Copy the value from Application EUI from the TTN console in LSB mode
  3244. static const u1_t PROGMEM APPEUI[8]= { 0x.., 0x.., .. };
  3245. void os_getArtEui (u1_t* buf) { memcpy_P(buf, APPEUI, 8);}
  3246.  
  3247. // This key should be in big endian format (or, since it is not really a
  3248. // number but a block of memory, endianness does not really apply). In
  3249. // practice, a key taken from ttnctl can be copied as-is. Anyway its in MSB mode.
  3250. static const u1_t PROGMEM APPKEY[16] = { 0x.., .. };
  3251. void os_getDevKey (u1_t* buf) { memcpy_P(buf, APPKEY, 16);}
  3252.  
  3253. static osjob_t sendjob;
  3254.  
  3255. // Schedule TX every this many seconds (might become longer due to duty
  3256. // cycle limitations).
  3257. const unsigned TX_INTERVAL = 120;
  3258.  
  3259. // Pin mapping
  3260. const lmic_pinmap lmic_pins = {
  3261.    .nss = 18,
  3262.    .rxtx = LMIC_UNUSED_PIN,
  3263.    .rst = 14,
  3264.    .dio = {26, 33, 32}  // Pins for the Heltec ESP32 Lora board/ TTGO Lora32 with 3D metal antenna
  3265. };
  3266.  
  3267. void do_send(osjob_t* j){
  3268.    // Payload to send (uplink)
  3269.    static uint8_t message[] = "Hello OTAA!";
  3270.  
  3271.    // Check if there is not a current TX/RX job running
  3272.    if (LMIC.opmode &amp; OP_TXRXPEND) {
  3273.        Serial.println(F("OP_TXRXPEND, not sending"));
  3274.    } else {
  3275.        // Prepare upstream data transmission at the next possible time.
  3276.        LMIC_setTxData2(1, message, sizeof(message)-1, 0);
  3277.        Serial.println(F("Sending uplink packet..."));
  3278.        digitalWrite(LEDPIN, HIGH);
  3279.    }
  3280.    // Next TX is scheduled after TX_COMPLETE event.
  3281. }
  3282.  
  3283. void onEvent (ev_t ev) {
  3284.    Serial.print(os_getTime());
  3285.    Serial.print(": ");
  3286.    Serial.print(ev);
  3287.    Serial.print(": ");
  3288.    switch(ev) {
  3289.        case EV_SCAN_TIMEOUT:
  3290.            Serial.println(F("EV_SCAN_TIMEOUT"));
  3291.            break;
  3292.        case EV_BEACON_FOUND:
  3293.            Serial.println(F("EV_BEACON_FOUND"));
  3294.            break;
  3295.        case EV_BEACON_MISSED:
  3296.            Serial.println(F("EV_BEACON_MISSED"));
  3297.            break;
  3298.        case EV_BEACON_TRACKED:
  3299.            Serial.println(F("EV_BEACON_TRACKED"));
  3300.            break;
  3301.        case EV_JOIN_FAILED:
  3302.            Serial.println(F("EV_JOIN_FAILED"));
  3303.            break;
  3304.        case EV_REJOIN_FAILED:
  3305.            Serial.println(F("EV_REJOIN_FAILED"));
  3306.            break;
  3307.        case EV_LOST_TSYNC:
  3308.            Serial.println(F("EV_LOST_TSYNC"));
  3309.            break;
  3310.        case EV_RESET:
  3311.            Serial.println(F("EV_RESET"));
  3312.            break;
  3313.        case EV_RXCOMPLETE:
  3314.            // data received in ping slot
  3315.            Serial.println(F("EV_RXCOMPLETE"));
  3316.            break;
  3317.        case EV_LINK_DEAD:
  3318.            Serial.println(F("EV_LINK_DEAD"));
  3319.            break;
  3320.        case EV_LINK_ALIVE:
  3321.            Serial.println(F("EV_LINK_ALIVE"));
  3322.            break;
  3323.  
  3324.        case EV_SCAN_FOUND:
  3325.            Serial.println(F("EV_SCAN_FOUND"));
  3326.            break;
  3327.        
  3328.        case EV_TXSTART:
  3329.            Serial.println(F("EV_TXSTART"));
  3330.            break;
  3331.        case EV_TXCANCELED:
  3332.            Serial.println(F("EV_TXCANCELED"));
  3333.            break;
  3334.        case EV_RXSTART:
  3335.            // do not print anything -- it wrecks timing
  3336.            break;
  3337.  
  3338.        case EV_TXCOMPLETE:
  3339.            Serial.println(F("EV_TXCOMPLETE (includes waiting for RX windows)"));
  3340.  
  3341.            if (LMIC.txrxFlags &amp; TXRX_ACK) {
  3342.              Serial.println(F("Received ack"));
  3343.            }
  3344.  
  3345.            if (LMIC.dataLen) {
  3346.              int i = 0;
  3347.              Serial.print(F("Data Received: "));
  3348.              Serial.write(LMIC.frame+LMIC.dataBeg, LMIC.dataLen);
  3349.              Serial.println();
  3350.              Serial.println(LMIC.rssi);
  3351.  
  3352.              for ( i = 0 ; i &lt; LMIC.dataLen ; i++ )
  3353.                TTN_response[i] = LMIC.frame[LMIC.dataBeg+i];
  3354.              TTN_response[i] = 0;
  3355.  
  3356.            }
  3357.  
  3358.            // Schedule next transmission
  3359.            os_setTimedCallback(&amp;sendjob, os_getTime()+sec2osticks(TX_INTERVAL), do_send);
  3360.            digitalWrite(LEDPIN, LOW);
  3361.  
  3362.            // Schedule next transmission
  3363.            os_setTimedCallback(&amp;sendjob, os_getTime()+sec2osticks(TX_INTERVAL), do_send);
  3364.            break;
  3365.        case EV_JOINING:
  3366.            Serial.println(F("EV_JOINING: -&gt; Joining..."));
  3367.  
  3368.            break;
  3369.        case EV_JOINED: {
  3370.              Serial.println(F("EV_JOINED"));
  3371.  
  3372.              LMIC_setLinkCheckMode(1);
  3373.            }
  3374.            break;
  3375.  
  3376.        default:
  3377.            Serial.println(F("Unknown event"));
  3378.            Serial.print(ev);
  3379.            Serial.print("\n");
  3380.            break;
  3381.    }
  3382.  
  3383. }
  3384.  
  3385. void setup() {
  3386.    Serial.begin(115200);
  3387.    delay(2500);                      // Give time to the serial monitor to pick up
  3388.    Serial.println(F("Starting..."));
  3389.  
  3390.    // Use the Blue pin to signal transmission.
  3391.    pinMode(LEDPIN,OUTPUT);
  3392.  
  3393.    // LMIC init
  3394.    os_init();
  3395.  
  3396.    // Reset the MAC state. Session and pending data transfers will be discarded.
  3397.    LMIC_reset();
  3398.    LMIC_setClockError(MAX_CLOCK_ERROR * 1 / 100);
  3399.    // Set up the channels used by the Things Network, which corresponds
  3400.    // to the defaults of most gateways. Without this, only three base
  3401.    // channels from the LoRaWAN specification are used, which certainly
  3402.    // works, so it is good for debugging, but can overload those
  3403.    // frequencies, so be sure to configure the full frequency range of
  3404.    // your network here (unless your network autoconfigures them).
  3405.    // Setting up channels should happen after LMIC_setSession, as that
  3406.    // configures the minimal channel set.
  3407.  
  3408.    LMIC_setupChannel(0, 868100000, DR_RANGE_MAP(DR_SF12, DR_SF7),  BAND_CENTI);      // g-band
  3409.    LMIC_setupChannel(1, 868300000, DR_RANGE_MAP(DR_SF11, DR_SF7B), BAND_CENTI);      // g-band
  3410.    LMIC_setupChannel(2, 868500000, DR_RANGE_MAP(DR_SF10, DR_SF7),  BAND_CENTI);      // g-band
  3411.    LMIC_setupChannel(3, 867100000, DR_RANGE_MAP(DR_SF9, DR_SF7),  BAND_CENTI);      // g-band
  3412.    LMIC_setupChannel(4, 867300000, DR_RANGE_MAP(DR_SF8, DR_SF7),  BAND_CENTI);      // g-band
  3413.    LMIC_setupChannel(5, 867500000, DR_RANGE_MAP(DR_SF7, DR_SF7),  BAND_CENTI);      // g-band
  3414.    LMIC_setupChannel(6, 867700000, DR_RANGE_MAP(DR_SF7, DR_SF7),  BAND_CENTI);      // g-band
  3415.  
  3416.    
  3417.    // TTN defines an additional channel at 869.525Mhz using SF9 for class B
  3418.    // devices' ping slots. LMIC does not have an easy way to define set this
  3419.    // frequency and support for class B is spotty and untested, so this
  3420.    // frequency is not configured here.
  3421.  
  3422.    // Disable link check validation
  3423.    ///LMIC_setLinkCheckMode(0);
  3424.    LMIC_setAdrMode(1);
  3425.    LMIC_setLinkCheckMode(1);
  3426.    //LMIC_setClockError(MAX_CLOCK_ERROR * 1 / 100);
  3427.  
  3428.    // TTN uses SF9 for its RX2 window.
  3429.    LMIC.dn2Dr = DR_SF9;
  3430.  
  3431.    // Set data rate and transmit power for uplink (note: txpow seems to be ignored by the library)
  3432.    //LMIC_setDrTxpow(DR_SF11,14);
  3433.    LMIC_setDrTxpow(DR_SF9,14);
  3434.  
  3435.    // Start job
  3436.    do_send(&amp;sendjob);     // Will fire up also the join
  3437. }
  3438.  
  3439. void loop() {
  3440.    os_runloop_once();
  3441. }</code></pre></div>
  3442. </div>]]></content:encoded>
  3443.  <description>Tarim and I have been trying to get a LoRaWAN network up and running in Bristol using some of the old Bristol Wireless antenna locations. First step for me was in January when we got together and tried to get a Raspberry Pi Gateway working, with so much #fayle – a subtly broken Pi, a dodgy PSU connector, and I did not know that the Raspberry Pi imager process had changed for Bullseye (you have to set a user in settings, and enable ssh there – you can also put the wifi details in, so it’s handy if you know ...</description>
  3444. </item>
  3445. <item rdf:about="https://planb.nicecupoftea.org/2022/05/19/time-squish/">
  3446.  <dc:creator>Libby Miller</dc:creator>
  3447.  <dc:source>Plan B by Libby Miller</dc:source>
  3448.  <dc:relation>http://planb.nicecupoftea.org/</dc:relation>
  3449.  <planet:content xmlns="http://www.w3.org/1999/xhtml" rdf:parseType="Literal">
  3450. <div>
  3451. <p>I keep seeing these two odd time effects in my life and
  3452. wondering if they are connected.</p>
  3453. <p>The first is that my work-life has become either extremely
  3454. intense – and I don’t mean long hours, I mean intense brainwork for
  3455. maybe a week – that wipes me out – and then the next is inevitably
  3456. slower and less intense. Basically everything gets bunched up
  3457. together. I <em>feel</em> like this has something to do with
  3458. everyone working from home, but I’m not really sure how to explain
  3459. it (though it reminds me of my time at <a href=
  3460. "https://en.wikipedia.org/wiki/Joost">Joost</a> where we’d have an
  3461. intense series of meetings with everyone together every few months,
  3462. because we were distributed. But this type is not organised, it
  3463. just happens). My partner pointed out that this might simply be
  3464. poor planning on my part (thanks! I’m quite good at planning
  3465. <em>actually</em>).</p>
  3466. <p>The second is something we’ve noticed at the <a href=
  3467. "https://cubecinema.com">Cube</a> – people are not committing to
  3468. doing stuff (coming to an event, volunteering etc) until very close
  3469. to the event. Something like 20-30% of our tickets for gigs are
  3470. being sold the day before or on the day. I don’t think it’s people
  3471. waiting for something better. I wonder if it’s Covid-related
  3472. uncertainty? (also 10-15% don’t turn up, not sure if that’s
  3473. relevant).</p>
  3474. <p>Anyone else seeing this type of thing?</p>
  3475. <figure class="wp-block-image size-large"><a href=
  3476. "https://libbymiller.files.wordpress.com/2022/05/image.png"><img width="480"
  3477. height="360" data-attachment-id="3417" data-permalink=
  3478. "https://planb.nicecupoftea.org/2022/05/19/time-squish/image-2/"
  3479. data-orig-file=
  3480. "https://libbymiller.files.wordpress.com/2022/05/image.png"
  3481. data-orig-size="480,360" data-comments-opened="1" data-image-meta=
  3482. "{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}"
  3483. data-image-title="image" data-image-description=""
  3484. data-image-caption="" data-medium-file=
  3485. "https://libbymiller.files.wordpress.com/2022/05/image.png?w=300"
  3486. data-large-file=
  3487. "https://libbymiller.files.wordpress.com/2022/05/image.png?w=480"
  3488. src=
  3489. "https://libbymiller.files.wordpress.com/2022/05/image.png?w=480"
  3490. alt="" class="wp-image-3417" srcset=
  3491. "https://libbymiller.files.wordpress.com/2022/05/image.png 480w, https://libbymiller.files.wordpress.com/2022/05/image.png?w=150 150w, https://libbymiller.files.wordpress.com/2022/05/image.png?w=300 300w"
  3492. sizes="(max-width: 480px) 100vw, 480px" /></a></figure>
  3493. </div>
  3494. </planet:content>
  3495.  <dc:date rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2024-03-11T14:09:56.000000Z</dc:date>
  3496.  <title>Time squish</title>
  3497.  <link>https://planb.nicecupoftea.org/2022/05/19/time-squish/</link>
  3498.  <content:encoded rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral"><![CDATA[
  3499. <div xmlns='http://www.w3.org/1999/xhtml'>
  3500. <div>
  3501. <p>I keep seeing these two odd time effects in my life and
  3502. wondering if they are connected.</p>
  3503. <p>The first is that my work-life has become either extremely
  3504. intense – and I don’t mean long hours, I mean intense brainwork for
  3505. maybe a week – that wipes me out – and then the next is inevitably
  3506. slower and less intense. Basically everything gets bunched up
  3507. together. I <em>feel</em> like this has something to do with
  3508. everyone working from home, but I’m not really sure how to explain
  3509. it (though it reminds me of my time at <a href=
  3510. "https://en.wikipedia.org/wiki/Joost">Joost</a> where we’d have an
  3511. intense series of meetings with everyone together every few months,
  3512. because we were distributed. But this type is not organised, it
  3513. just happens). My partner pointed out that this might simply be
  3514. poor planning on my part (thanks! I’m quite good at planning
  3515. <em>actually</em>).</p>
  3516. <p>The second is something we’ve noticed at the <a href=
  3517. "https://cubecinema.com">Cube</a> – people are not committing to
  3518. doing stuff (coming to an event, volunteering etc) until very close
  3519. to the event. Something like 20-30% of our tickets for gigs are
  3520. being sold the day before or on the day. I don’t think it’s people
  3521. waiting for something better. I wonder if it’s Covid-related
  3522. uncertainty? (also 10-15% don’t turn up, not sure if that’s
  3523. relevant).</p>
  3524. <p>Anyone else seeing this type of thing?</p>
  3525. <figure class="wp-block-image size-large"><a href=
  3526. "https://libbymiller.files.wordpress.com/2022/05/image.png"><img width="480"
  3527. height="360" data-attachment-id="3417" data-permalink=
  3528. "https://planb.nicecupoftea.org/2022/05/19/time-squish/image-2/"
  3529. data-orig-file=
  3530. "https://libbymiller.files.wordpress.com/2022/05/image.png"
  3531. data-orig-size="480,360" data-comments-opened="1" data-image-meta=
  3532. "{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}"
  3533. data-image-title="image" data-image-description=""
  3534. data-image-caption="" data-medium-file=
  3535. "https://libbymiller.files.wordpress.com/2022/05/image.png?w=300"
  3536. data-large-file=
  3537. "https://libbymiller.files.wordpress.com/2022/05/image.png?w=480"
  3538. src=
  3539. "https://libbymiller.files.wordpress.com/2022/05/image.png?w=480"
  3540. alt="" class="wp-image-3417" srcset=
  3541. "https://libbymiller.files.wordpress.com/2022/05/image.png 480w, https://libbymiller.files.wordpress.com/2022/05/image.png?w=150 150w, https://libbymiller.files.wordpress.com/2022/05/image.png?w=300 300w"
  3542. sizes="(max-width: 480px) 100vw, 480px" /></a></figure>
  3543. </div>
  3544. </div>]]></content:encoded>
  3545.  <description>I keep seeing these two odd time effects in my life and wondering if they are connected. The first is that my work-life has become either extremely intense – and I don’t mean long hours, I mean intense brainwork for maybe a week – that wipes me out – and then the next is inevitably slower and less intense. Basically everything gets bunched up together. I feel like this has something to do with everyone working from home, but I’m not really sure how to explain it (though it reminds me of my time at Joost where we’d have an ...</description>
  3546. </item>
  3547. <item rdf:about="https://planb.nicecupoftea.org/2021/05/08/sparkfun-edge-macos-x-ftdi/">
  3548.  <dc:creator>Libby Miller</dc:creator>
  3549.  <dc:source>Plan B by Libby Miller</dc:source>
  3550.  <dc:relation>http://planb.nicecupoftea.org/</dc:relation>
  3551.  <planet:content xmlns="http://www.w3.org/1999/xhtml" rdf:parseType="Literal">
  3552. <div>
  3553. <p>More for my reference than anything else. I’ve been trying to
  3554. get the toolchain set up to use a Sparkfun Edge. I had the <a href=
  3555. "https://www.sparkfun.com/products/15170">Edge</a>, the <a href=
  3556. "https://www.sparkfun.com/products/13746">Beefy3 FTDI breakout</a>,
  3557. and a working USB cable.</p>
  3558. <div class="wp-block-image">
  3559. <figure class="aligncenter size-large"><a href=
  3560. "https://libbymiller.files.wordpress.com/2021/05/cats.png"><img width="324"
  3561. height="244" data-attachment-id="3398" data-permalink=
  3562. "https://planb.nicecupoftea.org/cats/" data-orig-file=
  3563. "https://libbymiller.files.wordpress.com/2021/05/cats.png"
  3564. data-orig-size="324,244" data-comments-opened="1" data-image-meta=
  3565. "{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}"
  3566. data-image-title="cats" data-image-description=""
  3567. data-image-caption="" data-medium-file=
  3568. "https://libbymiller.files.wordpress.com/2021/05/cats.png?w=300"
  3569. data-large-file=
  3570. "https://libbymiller.files.wordpress.com/2021/05/cats.png?w=324"
  3571. src=
  3572. "https://libbymiller.files.wordpress.com/2021/05/cats.png?w=324"
  3573. alt="" class="wp-image-3398" srcset=
  3574. "https://libbymiller.files.wordpress.com/2021/05/cats.png 324w, https://libbymiller.files.wordpress.com/2021/05/cats.png?w=150 150w, https://libbymiller.files.wordpress.com/2021/05/cats.png?w=300 300w"
  3575. sizes="(max-width: 324px) 100vw, 324px" /></a>
  3576. <figcaption>Blurry pic of cats taken using Sparkfun Edge and HIMAX
  3577. camera</figcaption>
  3578. </figure>
  3579. </div>
  3580. <p><a href=
  3581. "https://codelabs.developers.google.com/codelabs/sparkfun-tensorflow/#0">
  3582. This</a> worked great for the speech example, for me (although the
  3583. actual tensorflow part never understands my “yes” “no” etc, but
  3584. anyway, I was able to successfully upload it)</p>
  3585. <pre class="wp-block-code">
  3586. <code>$ git clone --depth 1 https://github.com/tensorflow/tensorflow.git
  3587. $ cd tensorflow
  3588. $ gmake -f tensorflow/lite/micro/tools/make/Makefile TARGET=sparkfun_edge micro_speech_bin
  3589. $ cp tensorflow/lite/micro/tools/make/downloads/AmbiqSuite-Rel2.2.0/tools/apollo3_scripts/keys_info0.py tensorflow/lite/micro/tools/make/downloads/AmbiqSuite-Rel2.2.0/tools/apollo3_scripts/keys_info.py
  3590. $ python3 tensorflow/lite/micro/tools/make/downloads/AmbiqSuite-Rel2.2.0/tools/apollo3_scripts/create_cust_image_blob.py --bin tensorflow/lite/micro/tools/make/gen/sparkfun_edge_cortex-m4_micro/bin/micro_speech.bin --load-address 0xC000 --magic-num 0xCB -o main_nonsecure_ota --version 0x0
  3591. $ python3 tensorflow/lite/micro/tools/make/downloads/AmbiqSuite-Rel2.2.0/tools/apollo3_scripts/create_cust_wireupdate_blob.py --load-address 0x20000 --bin main_nonsecure_ota.bin -i 6 -o main_nonsecure_wire --options 0x1
  3592. $ export BAUD_RATE=921600
  3593. $ export DEVICENAME=/dev/cu.usbserial-DN06A1HD
  3594. $ python3 tensorflow/lite/micro/tools/make/downloads/AmbiqSuite-Rel2.2.0/tools/apollo3_scripts/uart_wired_update.py -b ${BAUD_RATE} ${DEVICENAME} -r 1 -f main_nonsecure_wire.bin -i 6</code></pre>
  3595. <p>But then I couldn’t figure out how to generalise it to use other
  3596. examples – I wanted to use the camera because ages ago I bought a
  3597. load of tiny cameras to use with the Edge.</p>
  3598. <p>So I tried <a href=
  3599. "https://learn.sparkfun.com/tutorials/using-sparkfun-edge-board-with-ambiq-apollo3-sdk/introduction">
  3600. this guide</a>, but couldn’t figure out where it the installer had
  3601. put the compiler. Seems basic but….??</p>
  3602. <p>So in the end I used <a href=
  3603. "https://codelabs.developers.google.com/codelabs/sparkfun-tensorflow/#0">
  3604. the first instructions</a> to download the tools, and then <a href=
  3605. "https://learn.sparkfun.com/tutorials/using-sparkfun-edge-board-with-ambiq-apollo3-sdk/example-applications">
  3606. the second</a> to actually do the compilation and installation on
  3607. the board.</p>
  3608. <pre class="wp-block-code">
  3609. <code>$ find . | grep lis2dh12_accelerometer_uart
  3610. # you might need this -
  3611. # mv tools/apollo3_scripts/keys_info0.py tools/apollo3_scripts/keys_info.py
  3612. $ cd ./tensorflow/lite/micro/tools/make/downloads/AmbiqSuite-Rel2.2.0/boards_sfe/edge/examples/lis2dh12_accelerometer_uart/gcc/
  3613. $ export PATH="/Users/libbym/personal/mayke2021/tensorflow/tensorflow/lite/micro/tools/make/downloads/gcc_embedded/bin/:$PATH"
  3614. $ make clean
  3615. $ make COM_PORT=/dev/cu.usbserial-DN06A1HD bootload_asb ASB_UPLOAD_BAUD=921600</code></pre>
  3616. <p>etc. Your COM port will be different, find it using</p>
  3617. <pre class="wp-block-code"><code>ls /dev/cu*</code></pre>
  3618. <p>If like me the FTDI serial port KEEPS VANISHING ARGH – <a href=
  3619. "https://aloriumtech.com/how-to-fix-ftdi-driver-issue-on-mac-and-macos/">
  3620. this</a> may help (I’d installed 3rd party FTDI drivers ages ago
  3621. and they were conflicting with the Apple’s ones. Maybe. Or the
  3622. reboot fixed it. No idea).</p>
  3623. <div data-carousel-extra=
  3624. '{"blog_id":7954761,"permalink":"https:\/\/planb.nicecupoftea.org\/2021\/05\/08\/sparkfun-edge-macos-x-ftdi\/"}'
  3625. class=
  3626. "wp-block-jetpack-tiled-gallery aligncenter is-style-rectangular">
  3627. <div class="tiled-gallery__gallery">
  3628. <div class="tiled-gallery__row">
  3629. <div class="tiled-gallery__col" style="flex-basis:50%;">
  3630. <figure class="tiled-gallery__item"><img data-attachment-id="3400"
  3631. data-permalink="https://planb.nicecupoftea.org/img_2052/"
  3632. data-orig-file=
  3633. "https://libbymiller.files.wordpress.com/2021/05/img_2052.jpg"
  3634. data-orig-size="3024,4032" data-comments-opened="1"
  3635. data-image-meta="{&quot;aperture&quot;:&quot;1.6&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;iPhone 12 mini&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1620485175&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;4.2&quot;,&quot;iso&quot;:&quot;640&quot;,&quot;shutter_speed&quot;:&quot;0.03030303030303&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;1&quot;}"
  3636. data-image-title="img_2052" data-image-description=""
  3637. data-image-caption="" data-medium-file=
  3638. "https://libbymiller.files.wordpress.com/2021/05/img_2052.jpg?w=225"
  3639. data-large-file=
  3640. "https://libbymiller.files.wordpress.com/2021/05/img_2052.jpg?w=768"
  3641. srcset=
  3642. "https://libbymiller.files.wordpress.com/2021/05/img_2052.jpg?strip=info&amp;w=600 600w,https://libbymiller.files.wordpress.com/2021/05/img_2052.jpg?strip=info&amp;w=900 900w,https://libbymiller.files.wordpress.com/2021/05/img_2052.jpg?strip=info&amp;w=1200 1200w,https://libbymiller.files.wordpress.com/2021/05/img_2052.jpg?strip=info&amp;w=1500 1500w,https://libbymiller.files.wordpress.com/2021/05/img_2052.jpg?strip=info&amp;w=1800 1800w,https://libbymiller.files.wordpress.com/2021/05/img_2052.jpg?strip=info&amp;w=2000 2000w"
  3643. alt="" data-height="4032" data-id="3400" data-link=
  3644. "https://planb.nicecupoftea.org/img_2052/" data-url=
  3645. "https://libbymiller.files.wordpress.com/2021/05/img_2052.jpg"
  3646. data-width="3024" src=
  3647. "https://libbymiller.files.wordpress.com/2021/05/img_2052.jpg"
  3648. data-amp-layout="responsive" /></figure>
  3649. </div>
  3650. <div class="tiled-gallery__col" style="flex-basis:50%;">
  3651. <figure class="tiled-gallery__item"><img data-attachment-id="3402"
  3652. data-permalink="https://planb.nicecupoftea.org/img_2054/"
  3653. data-orig-file=
  3654. "https://libbymiller.files.wordpress.com/2021/05/img_2054.jpg"
  3655. data-orig-size="3024,4032" data-comments-opened="1"
  3656. data-image-meta="{&quot;aperture&quot;:&quot;1.6&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;iPhone 12 mini&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1620485190&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;4.2&quot;,&quot;iso&quot;:&quot;640&quot;,&quot;shutter_speed&quot;:&quot;0.03125&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;1&quot;}"
  3657. data-image-title="img_2054" data-image-description=""
  3658. data-image-caption="" data-medium-file=
  3659. "https://libbymiller.files.wordpress.com/2021/05/img_2054.jpg?w=225"
  3660. data-large-file=
  3661. "https://libbymiller.files.wordpress.com/2021/05/img_2054.jpg?w=768"
  3662. srcset=
  3663. "https://libbymiller.files.wordpress.com/2021/05/img_2054.jpg?strip=info&amp;w=600 600w,https://libbymiller.files.wordpress.com/2021/05/img_2054.jpg?strip=info&amp;w=900 900w,https://libbymiller.files.wordpress.com/2021/05/img_2054.jpg?strip=info&amp;w=1200 1200w,https://libbymiller.files.wordpress.com/2021/05/img_2054.jpg?strip=info&amp;w=1500 1500w,https://libbymiller.files.wordpress.com/2021/05/img_2054.jpg?strip=info&amp;w=1800 1800w,https://libbymiller.files.wordpress.com/2021/05/img_2054.jpg?strip=info&amp;w=2000 2000w"
  3664. alt="" data-height="4032" data-id="3402" data-link=
  3665. "https://planb.nicecupoftea.org/img_2054/" data-url=
  3666. "https://libbymiller.files.wordpress.com/2021/05/img_2054.jpg"
  3667. data-width="3024" src=
  3668. "https://libbymiller.files.wordpress.com/2021/05/img_2054.jpg"
  3669. data-amp-layout="responsive" /></figure>
  3670. </div>
  3671. </div>
  3672. </div>
  3673. </div>
  3674. <p>Then you have to use a serial programme to get the image. I used
  3675. the arduino serial since it was there and then copy and pasted the
  3676. output into a textfile, at which point you can use</p>
  3677. <pre class="wp-block-code">
  3678. <code>tensorflow/lite/micro/tools/make/downloads/AmbiqSuite-Rel2.2.0/boards_sfe/common/examples/hm01b0_camera_uart/utils/raw2bmp.py</code></pre>
  3679. <p>to convert it to a png. Palavers.</p>
  3680. </div>
  3681. </planet:content>
  3682.  <dc:date rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2024-03-11T14:09:56.000000Z</dc:date>
  3683.  <title>Sparkfun Edge, MacOS X, FTDI</title>
  3684.  <link>https://planb.nicecupoftea.org/2021/05/08/sparkfun-edge-macos-x-ftdi/</link>
  3685.  <content:encoded rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral"><![CDATA[
  3686. <div xmlns='http://www.w3.org/1999/xhtml'>
  3687. <div>
  3688. <p>More for my reference than anything else. I’ve been trying to
  3689. get the toolchain set up to use a Sparkfun Edge. I had the <a href=
  3690. "https://www.sparkfun.com/products/15170">Edge</a>, the <a href=
  3691. "https://www.sparkfun.com/products/13746">Beefy3 FTDI breakout</a>,
  3692. and a working USB cable.</p>
  3693. <div class="wp-block-image">
  3694. <figure class="aligncenter size-large"><a href=
  3695. "https://libbymiller.files.wordpress.com/2021/05/cats.png"><img width="324"
  3696. height="244" data-attachment-id="3398" data-permalink=
  3697. "https://planb.nicecupoftea.org/cats/" data-orig-file=
  3698. "https://libbymiller.files.wordpress.com/2021/05/cats.png"
  3699. data-orig-size="324,244" data-comments-opened="1" data-image-meta=
  3700. "{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}"
  3701. data-image-title="cats" data-image-description=""
  3702. data-image-caption="" data-medium-file=
  3703. "https://libbymiller.files.wordpress.com/2021/05/cats.png?w=300"
  3704. data-large-file=
  3705. "https://libbymiller.files.wordpress.com/2021/05/cats.png?w=324"
  3706. src=
  3707. "https://libbymiller.files.wordpress.com/2021/05/cats.png?w=324"
  3708. alt="" class="wp-image-3398" srcset=
  3709. "https://libbymiller.files.wordpress.com/2021/05/cats.png 324w, https://libbymiller.files.wordpress.com/2021/05/cats.png?w=150 150w, https://libbymiller.files.wordpress.com/2021/05/cats.png?w=300 300w"
  3710. sizes="(max-width: 324px) 100vw, 324px" /></a>
  3711. <figcaption>Blurry pic of cats taken using Sparkfun Edge and HIMAX
  3712. camera</figcaption>
  3713. </figure>
  3714. </div>
  3715. <p><a href=
  3716. "https://codelabs.developers.google.com/codelabs/sparkfun-tensorflow/#0">
  3717. This</a> worked great for the speech example, for me (although the
  3718. actual tensorflow part never understands my “yes” “no” etc, but
  3719. anyway, I was able to successfully upload it)</p>
  3720. <pre class="wp-block-code">
  3721. <code>$ git clone --depth 1 https://github.com/tensorflow/tensorflow.git
  3722. $ cd tensorflow
  3723. $ gmake -f tensorflow/lite/micro/tools/make/Makefile TARGET=sparkfun_edge micro_speech_bin
  3724. $ cp tensorflow/lite/micro/tools/make/downloads/AmbiqSuite-Rel2.2.0/tools/apollo3_scripts/keys_info0.py tensorflow/lite/micro/tools/make/downloads/AmbiqSuite-Rel2.2.0/tools/apollo3_scripts/keys_info.py
  3725. $ python3 tensorflow/lite/micro/tools/make/downloads/AmbiqSuite-Rel2.2.0/tools/apollo3_scripts/create_cust_image_blob.py --bin tensorflow/lite/micro/tools/make/gen/sparkfun_edge_cortex-m4_micro/bin/micro_speech.bin --load-address 0xC000 --magic-num 0xCB -o main_nonsecure_ota --version 0x0
  3726. $ python3 tensorflow/lite/micro/tools/make/downloads/AmbiqSuite-Rel2.2.0/tools/apollo3_scripts/create_cust_wireupdate_blob.py --load-address 0x20000 --bin main_nonsecure_ota.bin -i 6 -o main_nonsecure_wire --options 0x1
  3727. $ export BAUD_RATE=921600
  3728. $ export DEVICENAME=/dev/cu.usbserial-DN06A1HD
  3729. $ python3 tensorflow/lite/micro/tools/make/downloads/AmbiqSuite-Rel2.2.0/tools/apollo3_scripts/uart_wired_update.py -b ${BAUD_RATE} ${DEVICENAME} -r 1 -f main_nonsecure_wire.bin -i 6</code></pre>
  3730. <p>But then I couldn’t figure out how to generalise it to use other
  3731. examples – I wanted to use the camera because ages ago I bought a
  3732. load of tiny cameras to use with the Edge.</p>
  3733. <p>So I tried <a href=
  3734. "https://learn.sparkfun.com/tutorials/using-sparkfun-edge-board-with-ambiq-apollo3-sdk/introduction">
  3735. this guide</a>, but couldn’t figure out where it the installer had
  3736. put the compiler. Seems basic but….??</p>
  3737. <p>So in the end I used <a href=
  3738. "https://codelabs.developers.google.com/codelabs/sparkfun-tensorflow/#0">
  3739. the first instructions</a> to download the tools, and then <a href=
  3740. "https://learn.sparkfun.com/tutorials/using-sparkfun-edge-board-with-ambiq-apollo3-sdk/example-applications">
  3741. the second</a> to actually do the compilation and installation on
  3742. the board.</p>
  3743. <pre class="wp-block-code">
  3744. <code>$ find . | grep lis2dh12_accelerometer_uart
  3745. # you might need this -
  3746. # mv tools/apollo3_scripts/keys_info0.py tools/apollo3_scripts/keys_info.py
  3747. $ cd ./tensorflow/lite/micro/tools/make/downloads/AmbiqSuite-Rel2.2.0/boards_sfe/edge/examples/lis2dh12_accelerometer_uart/gcc/
  3748. $ export PATH="/Users/libbym/personal/mayke2021/tensorflow/tensorflow/lite/micro/tools/make/downloads/gcc_embedded/bin/:$PATH"
  3749. $ make clean
  3750. $ make COM_PORT=/dev/cu.usbserial-DN06A1HD bootload_asb ASB_UPLOAD_BAUD=921600</code></pre>
  3751. <p>etc. Your COM port will be different, find it using</p>
  3752. <pre class="wp-block-code"><code>ls /dev/cu*</code></pre>
  3753. <p>If like me the FTDI serial port KEEPS VANISHING ARGH – <a href=
  3754. "https://aloriumtech.com/how-to-fix-ftdi-driver-issue-on-mac-and-macos/">
  3755. this</a> may help (I’d installed 3rd party FTDI drivers ages ago
  3756. and they were conflicting with the Apple’s ones. Maybe. Or the
  3757. reboot fixed it. No idea).</p>
  3758. <div data-carousel-extra=
  3759. '{"blog_id":7954761,"permalink":"https:\/\/planb.nicecupoftea.org\/2021\/05\/08\/sparkfun-edge-macos-x-ftdi\/"}'
  3760. class=
  3761. "wp-block-jetpack-tiled-gallery aligncenter is-style-rectangular">
  3762. <div class="tiled-gallery__gallery">
  3763. <div class="tiled-gallery__row">
  3764. <div class="tiled-gallery__col" style="flex-basis:50%;">
  3765. <figure class="tiled-gallery__item"><img data-attachment-id="3400"
  3766. data-permalink="https://planb.nicecupoftea.org/img_2052/"
  3767. data-orig-file=
  3768. "https://libbymiller.files.wordpress.com/2021/05/img_2052.jpg"
  3769. data-orig-size="3024,4032" data-comments-opened="1"
  3770. data-image-meta="{&quot;aperture&quot;:&quot;1.6&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;iPhone 12 mini&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1620485175&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;4.2&quot;,&quot;iso&quot;:&quot;640&quot;,&quot;shutter_speed&quot;:&quot;0.03030303030303&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;1&quot;}"
  3771. data-image-title="img_2052" data-image-description=""
  3772. data-image-caption="" data-medium-file=
  3773. "https://libbymiller.files.wordpress.com/2021/05/img_2052.jpg?w=225"
  3774. data-large-file=
  3775. "https://libbymiller.files.wordpress.com/2021/05/img_2052.jpg?w=768"
  3776. srcset=
  3777. "https://libbymiller.files.wordpress.com/2021/05/img_2052.jpg?strip=info&amp;w=600 600w,https://libbymiller.files.wordpress.com/2021/05/img_2052.jpg?strip=info&amp;w=900 900w,https://libbymiller.files.wordpress.com/2021/05/img_2052.jpg?strip=info&amp;w=1200 1200w,https://libbymiller.files.wordpress.com/2021/05/img_2052.jpg?strip=info&amp;w=1500 1500w,https://libbymiller.files.wordpress.com/2021/05/img_2052.jpg?strip=info&amp;w=1800 1800w,https://libbymiller.files.wordpress.com/2021/05/img_2052.jpg?strip=info&amp;w=2000 2000w"
  3778. alt="" data-height="4032" data-id="3400" data-link=
  3779. "https://planb.nicecupoftea.org/img_2052/" data-url=
  3780. "https://libbymiller.files.wordpress.com/2021/05/img_2052.jpg"
  3781. data-width="3024" src=
  3782. "https://libbymiller.files.wordpress.com/2021/05/img_2052.jpg"
  3783. data-amp-layout="responsive" /></figure>
  3784. </div>
  3785. <div class="tiled-gallery__col" style="flex-basis:50%;">
  3786. <figure class="tiled-gallery__item"><img data-attachment-id="3402"
  3787. data-permalink="https://planb.nicecupoftea.org/img_2054/"
  3788. data-orig-file=
  3789. "https://libbymiller.files.wordpress.com/2021/05/img_2054.jpg"
  3790. data-orig-size="3024,4032" data-comments-opened="1"
  3791. data-image-meta="{&quot;aperture&quot;:&quot;1.6&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;iPhone 12 mini&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1620485190&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;4.2&quot;,&quot;iso&quot;:&quot;640&quot;,&quot;shutter_speed&quot;:&quot;0.03125&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;1&quot;}"
  3792. data-image-title="img_2054" data-image-description=""
  3793. data-image-caption="" data-medium-file=
  3794. "https://libbymiller.files.wordpress.com/2021/05/img_2054.jpg?w=225"
  3795. data-large-file=
  3796. "https://libbymiller.files.wordpress.com/2021/05/img_2054.jpg?w=768"
  3797. srcset=
  3798. "https://libbymiller.files.wordpress.com/2021/05/img_2054.jpg?strip=info&amp;w=600 600w,https://libbymiller.files.wordpress.com/2021/05/img_2054.jpg?strip=info&amp;w=900 900w,https://libbymiller.files.wordpress.com/2021/05/img_2054.jpg?strip=info&amp;w=1200 1200w,https://libbymiller.files.wordpress.com/2021/05/img_2054.jpg?strip=info&amp;w=1500 1500w,https://libbymiller.files.wordpress.com/2021/05/img_2054.jpg?strip=info&amp;w=1800 1800w,https://libbymiller.files.wordpress.com/2021/05/img_2054.jpg?strip=info&amp;w=2000 2000w"
  3799. alt="" data-height="4032" data-id="3402" data-link=
  3800. "https://planb.nicecupoftea.org/img_2054/" data-url=
  3801. "https://libbymiller.files.wordpress.com/2021/05/img_2054.jpg"
  3802. data-width="3024" src=
  3803. "https://libbymiller.files.wordpress.com/2021/05/img_2054.jpg"
  3804. data-amp-layout="responsive" /></figure>
  3805. </div>
  3806. </div>
  3807. </div>
  3808. </div>
  3809. <p>Then you have to use a serial programme to get the image. I used
  3810. the arduino serial since it was there and then copy and pasted the
  3811. output into a textfile, at which point you can use</p>
  3812. <pre class="wp-block-code">
  3813. <code>tensorflow/lite/micro/tools/make/downloads/AmbiqSuite-Rel2.2.0/boards_sfe/common/examples/hm01b0_camera_uart/utils/raw2bmp.py</code></pre>
  3814. <p>to convert it to a png. Palavers.</p>
  3815. </div>
  3816. </div>]]></content:encoded>
  3817.  <description>More for my reference than anything else. I’ve been trying to get the toolchain set up to use a Sparkfun Edge. I had the Edge , the Beefy3 FTDI breakout , and a working USB cable. Blurry pic of cats taken using Sparkfun Edge and HIMAX camera This worked great for the speech example, for me (although the actual tensorflow part never understands my “yes” “no” etc, but anyway, I was able to successfully upload it) $ git clone --depth 1 https://github.com/tensorflow/tensorflow.git $ cd tensorflow $ gmake -f tensorflow/lite/micro/tools/make/Makefile TARGET=sparkfun_edge micro_speech_bin $ cp tensorflow/lite/micro/tools/make/downloads/AmbiqSuite-Rel2.2.0/tools/apollo3_scripts/keys_info0.py tensorflow/lite/micro/tools/make/downloads/AmbiqSuite-Rel2.2.0/tools/apollo3_scripts/keys_info.py $ python3 tensorflow/lite/micro/tools/make/downloads/AmbiqSuite-Rel2.2.0/tools/apollo3_scripts/create_cust_image_blob.py --bin tensorflow/lite/micro/tools/make/gen/sparkfun_edge_cortex-m4_micro/bin/micro_speech.bin ...</description>
  3818. </item>
  3819. <item rdf:about="https://planb.nicecupoftea.org/2020/12/03/esp32-m5stickc-https-websockets-and-slack/">
  3820.  <dc:creator>Libby Miller</dc:creator>
  3821.  <dc:source>Plan B by Libby Miller</dc:source>
  3822.  <dc:relation>http://planb.nicecupoftea.org/</dc:relation>
  3823.  <planet:content xmlns="http://www.w3.org/1999/xhtml" rdf:parseType="Literal">
  3824. <div>
  3825. <p>I got one of these lovely <a href=
  3826. "https://m5stack.com/products/stick-c?variant=17203451265114">M5StickC</a>s
  3827. for a present, and had a play with it as part of <a href=
  3828. "https://chickengrylls.wordpress.com/2017/10/31/the-makevember-manifesto/">
  3829. Makevember</a>. I wanted to make a “<a href=
  3830. "https://www.instructables.com/Push-Puppet-Automata/">push</a>
  3831. <a href=
  3832. "https://www.instructables.com/3D-printed-Push-Puppet/">puppet</a>”
  3833. (one of those toys that you push upwards and they collapse) that
  3834. reacted to Slack commands. Not for any reason really, though I like
  3835. the idea of tiny colleagues that stand up when addressed on slack.
  3836. Makevember doesn’t need a reason. Or at any rate, it doesn’t need a
  3837. <em>good</em> reason.</p>
  3838. <p>Here are some notes about https and websockets on the ESP32 pico
  3839. which is the underlying board for the M5StickC.</p>
  3840. <p>I made a “<a href=
  3841. "https://makingathingaday.tumblr.com/post/179806193743/wemos-slack-pipecleaner-notifier">slack
  3842. wobbler</a>” a couple of years ago, also in makevember – an ESP8266
  3843. that connected to slack, then wobbled when someone was mentioned,
  3844. using a servo. Since then I ran into some https problems, obviously
  3845. also encountered by Jeremy21212121 who fixed it using a <a href=
  3846. "https://github.com/jeremy21212121/slack-doorbot-esp8266">modified
  3847. version of a websockets server</a>. This works for the ESP8266 –
  3848. turns out you can also get the same result using
  3849. <code>httpsClient.setInsecure()</code> using BearSSL. I’ve put an
  3850. example of that <a href=
  3851. "https://github.com/libbymiller/makeingathingaday/tree/master/slackwobbler-2020-insecure">
  3852. here</a>.</p>
  3853. <p>For ESP32 it seems a bit different. <a href=
  3854. "https://github.com/espressif/arduino-esp32/blob/master/libraries/HTTPClient/examples/BasicHttpsClient/BasicHttpsClient.ino">
  3855. As far as I can tell</a> you need the certificate not the
  3856. fingerprint in this case. You can get it using <code>openssl
  3857. s_client -connect api.slack.com:443</code></p>
  3858. <p>For ESP32 you also need to use the <a href=
  3859. "https://stackoverflow.com/a/51193438">correct libraries for wifi
  3860. and wifimulti</a>. The websocket client library is <a href=
  3861. "https://github.com/Links2004/arduinoWebSockets%20-%20Marcus%20Sadler">
  3862. this one</a>.</p>
  3863. <p>And a final note – the M5StickC is very cool but doesn’t enable
  3864. you to use many of its GPIO ports. The only one I can find that
  3865. allows you to use a servo directly is on the Grove connector, which
  3866. I bodged some female jumper wires into, though you can get a
  3867. <a href=
  3868. "https://m5stack.com/products/connector-grove-to-grove-pin-servo">grove
  3869. to servo converter</a> (there are various M5Stick hats you can use
  3870. for <a href=
  3871. "https://m5stack.com/products/m5stickc-8servos-hat">multiple
  3872. servo</a>s). Here’s some <a href=
  3873. "https://github.com/libbymiller/makeingathingaday/tree/master/m5_esp32_slack">
  3874. code</a>. And <a href=
  3875. "https://twitter.com/libbymiller/status/1333165223327444993">a
  3876. video</a>.</p>
  3877. <figure class="wp-block-image size-large"><a href=
  3878. "https://libbymiller.files.wordpress.com/2020/12/santa.jpg"><img width="768"
  3879. height="1024" data-attachment-id="3363" data-permalink=
  3880. "https://planb.nicecupoftea.org/santa/" data-orig-file=
  3881. "https://libbymiller.files.wordpress.com/2020/12/santa.jpg"
  3882. data-orig-size="3024,4032" data-comments-opened="1"
  3883. data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}"
  3884. data-image-title="santa" data-image-description=""
  3885. data-image-caption="" data-medium-file=
  3886. "https://libbymiller.files.wordpress.com/2020/12/santa.jpg?w=225"
  3887. data-large-file=
  3888. "https://libbymiller.files.wordpress.com/2020/12/santa.jpg?w=768"
  3889. src=
  3890. "https://libbymiller.files.wordpress.com/2020/12/santa.jpg?w=768"
  3891. alt="" class="wp-image-3363" srcset=
  3892. "https://libbymiller.files.wordpress.com/2020/12/santa.jpg?w=768 768w, https://libbymiller.files.wordpress.com/2020/12/santa.jpg?w=1536 1536w, https://libbymiller.files.wordpress.com/2020/12/santa.jpg?w=113 113w, https://libbymiller.files.wordpress.com/2020/12/santa.jpg?w=225 225w"
  3893. sizes="(max-width: 768px) 100vw, 768px" /></a></figure>
  3894. </div>
  3895. </planet:content>
  3896.  <dc:date rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2024-03-11T14:09:56.000000Z</dc:date>
  3897.  <title>ESP32 M5StickC, https, websockets, and Slack</title>
  3898.  <link>https://planb.nicecupoftea.org/2020/12/03/esp32-m5stickc-https-websockets-and-slack/</link>
  3899.  <content:encoded rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral"><![CDATA[
  3900. <div xmlns='http://www.w3.org/1999/xhtml'>
  3901. <div>
  3902. <p>I got one of these lovely <a href=
  3903. "https://m5stack.com/products/stick-c?variant=17203451265114">M5StickC</a>s
  3904. for a present, and had a play with it as part of <a href=
  3905. "https://chickengrylls.wordpress.com/2017/10/31/the-makevember-manifesto/">
  3906. Makevember</a>. I wanted to make a “<a href=
  3907. "https://www.instructables.com/Push-Puppet-Automata/">push</a>
  3908. <a href=
  3909. "https://www.instructables.com/3D-printed-Push-Puppet/">puppet</a>”
  3910. (one of those toys that you push upwards and they collapse) that
  3911. reacted to Slack commands. Not for any reason really, though I like
  3912. the idea of tiny colleagues that stand up when addressed on slack.
  3913. Makevember doesn’t need a reason. Or at any rate, it doesn’t need a
  3914. <em>good</em> reason.</p>
  3915. <p>Here are some notes about https and websockets on the ESP32 pico
  3916. which is the underlying board for the M5StickC.</p>
  3917. <p>I made a “<a href=
  3918. "https://makingathingaday.tumblr.com/post/179806193743/wemos-slack-pipecleaner-notifier">slack
  3919. wobbler</a>” a couple of years ago, also in makevember – an ESP8266
  3920. that connected to slack, then wobbled when someone was mentioned,
  3921. using a servo. Since then I ran into some https problems, obviously
  3922. also encountered by Jeremy21212121 who fixed it using a <a href=
  3923. "https://github.com/jeremy21212121/slack-doorbot-esp8266">modified
  3924. version of a websockets server</a>. This works for the ESP8266 –
  3925. turns out you can also get the same result using
  3926. <code>httpsClient.setInsecure()</code> using BearSSL. I’ve put an
  3927. example of that <a href=
  3928. "https://github.com/libbymiller/makeingathingaday/tree/master/slackwobbler-2020-insecure">
  3929. here</a>.</p>
  3930. <p>For ESP32 it seems a bit different. <a href=
  3931. "https://github.com/espressif/arduino-esp32/blob/master/libraries/HTTPClient/examples/BasicHttpsClient/BasicHttpsClient.ino">
  3932. As far as I can tell</a> you need the certificate not the
  3933. fingerprint in this case. You can get it using <code>openssl
  3934. s_client -connect api.slack.com:443</code></p>
  3935. <p>For ESP32 you also need to use the <a href=
  3936. "https://stackoverflow.com/a/51193438">correct libraries for wifi
  3937. and wifimulti</a>. The websocket client library is <a href=
  3938. "https://github.com/Links2004/arduinoWebSockets%20-%20Marcus%20Sadler">
  3939. this one</a>.</p>
  3940. <p>And a final note – the M5StickC is very cool but doesn’t enable
  3941. you to use many of its GPIO ports. The only one I can find that
  3942. allows you to use a servo directly is on the Grove connector, which
  3943. I bodged some female jumper wires into, though you can get a
  3944. <a href=
  3945. "https://m5stack.com/products/connector-grove-to-grove-pin-servo">grove
  3946. to servo converter</a> (there are various M5Stick hats you can use
  3947. for <a href=
  3948. "https://m5stack.com/products/m5stickc-8servos-hat">multiple
  3949. servo</a>s). Here’s some <a href=
  3950. "https://github.com/libbymiller/makeingathingaday/tree/master/m5_esp32_slack">
  3951. code</a>. And <a href=
  3952. "https://twitter.com/libbymiller/status/1333165223327444993">a
  3953. video</a>.</p>
  3954. <figure class="wp-block-image size-large"><a href=
  3955. "https://libbymiller.files.wordpress.com/2020/12/santa.jpg"><img width="768"
  3956. height="1024" data-attachment-id="3363" data-permalink=
  3957. "https://planb.nicecupoftea.org/santa/" data-orig-file=
  3958. "https://libbymiller.files.wordpress.com/2020/12/santa.jpg"
  3959. data-orig-size="3024,4032" data-comments-opened="1"
  3960. data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}"
  3961. data-image-title="santa" data-image-description=""
  3962. data-image-caption="" data-medium-file=
  3963. "https://libbymiller.files.wordpress.com/2020/12/santa.jpg?w=225"
  3964. data-large-file=
  3965. "https://libbymiller.files.wordpress.com/2020/12/santa.jpg?w=768"
  3966. src=
  3967. "https://libbymiller.files.wordpress.com/2020/12/santa.jpg?w=768"
  3968. alt="" class="wp-image-3363" srcset=
  3969. "https://libbymiller.files.wordpress.com/2020/12/santa.jpg?w=768 768w, https://libbymiller.files.wordpress.com/2020/12/santa.jpg?w=1536 1536w, https://libbymiller.files.wordpress.com/2020/12/santa.jpg?w=113 113w, https://libbymiller.files.wordpress.com/2020/12/santa.jpg?w=225 225w"
  3970. sizes="(max-width: 768px) 100vw, 768px" /></a></figure>
  3971. </div>
  3972. </div>]]></content:encoded>
  3973.  <description>I got one of these lovely M5StickC s for a present, and had a play with it as part of Makevember . I wanted to make a “ push puppet ” (one of those toys that you push upwards and they collapse) that reacted to Slack commands. Not for any reason really, though I like the idea of tiny colleagues that stand up when addressed on slack. Makevember doesn’t need a reason. Or at any rate, it doesn’t need a good reason. Here are some notes about https and websockets on the ESP32 pico which is the underlying board for ...</description>
  3974. </item>
  3975. <item rdf:about="https://planb.nicecupoftea.org/2020/11/14/improved-simpler-presence-robot/">
  3976.  <dc:creator>Libby Miller</dc:creator>
  3977.  <dc:source>Plan B by Libby Miller</dc:source>
  3978.  <dc:relation>http://planb.nicecupoftea.org/</dc:relation>
  3979.  <planet:content xmlns="http://www.w3.org/1999/xhtml" rdf:parseType="Literal">
  3980. <div>
  3981. <p><a href=
  3982. "https://chickengrylls.wordpress.com/2017/10/31/the-makevember-manifesto/">
  3983. Makevember</a> and lockdown have encouraged me to make an improved
  3984. version of <a href=
  3985. "https://planb.nicecupoftea.org/2020/10/24/libbybot-a-posable-remote-presence-bot-made-from-a-raspberry-pi-3-updates/">
  3986. libbybot</a>, which is a physical version of a person for remote
  3987. participation. I’m trying to think of a better name – she’s not all
  3988. about representing me, obviously, but anyone who can’t be somewhere
  3989. but wants to participate. [update Jan 15: she’s now called
  3990. “sock_puppet”].</p>
  3991. <p>This one is much, much simpler to make, thanks to the addition
  3992. of a pan-tilt hat and a simpler body. It’s also more expressive
  3993. thanks to <a href=
  3994. "https://shop.pimoroni.com/products/5x5-rgb-matrix-breakout">these
  3995. lovely little 5*5 led matrixes</a>.</p>
  3996. <p>Her main feature is that – using a laptop or phone – you can
  3997. see, hear and speak to people in a different physical place to you.
  3998. I used to use a version of this at work to be in meetings when I
  3999. was the only remote participant. That’s not much use now of course.
  4000. But perhaps in the future it might make sense for some people to be
  4001. remote and some present.</p>
  4002. <p>New recent features:</p>
  4003. <ul>
  4004. <li>easy to make*</li>
  4005. <li>wears clothes**</li>
  4006. <li>googly eyes</li>
  4007. <li>expressive mouth (moves when the remote participant is
  4008. speaking, can be happy, sad, etc, whatever can be expressed in 25
  4009. pixels)</li>
  4010. <li>can be “told” wifi details using QR codes</li>
  4011. <li>can move her head a bit (up / down / left / right)</li>
  4012. </ul>
  4013. <p>* ish<br />
  4014. **a sock</p>
  4015. <p>I’m still writing docs, but the repo is <a href=
  4016. "https://github.com/libbymiller/sock_puppet">here</a>.</p>
  4017. <div class="wp-block-group">
  4018. <div class=
  4019. "wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow">
  4020. <div class=
  4021. "wp-block-columns is-layout-flex wp-container-core-columns-is-layout-1 wp-block-columns-is-layout-flex">
  4022. <div class=
  4023. "wp-block-column is-layout-flow wp-block-column-is-layout-flow"
  4024. style="flex-basis:100%;">
  4025. <figure class="wp-block-image alignwide size-large"><img src=
  4026. "https://libbymiller.files.wordpress.com/2020/11/libbybot-lite-portrait.png?w=768"
  4027. alt="" />
  4028. <figcaption>Libbybot-lite – portrait by Damian</figcaption>
  4029. </figure>
  4030. </div>
  4031. </div>
  4032. </div>
  4033. </div>
  4034. </div>
  4035. </planet:content>
  4036.  <dc:date rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2024-03-11T14:09:56.000000Z</dc:date>
  4037.  <title>Sock-puppet – an improved, simpler presence robot</title>
  4038.  <link>https://planb.nicecupoftea.org/2020/11/14/improved-simpler-presence-robot/</link>
  4039.  <content:encoded rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral"><![CDATA[
  4040. <div xmlns='http://www.w3.org/1999/xhtml'>
  4041. <div>
  4042. <p><a href=
  4043. "https://chickengrylls.wordpress.com/2017/10/31/the-makevember-manifesto/">
  4044. Makevember</a> and lockdown have encouraged me to make an improved
  4045. version of <a href=
  4046. "https://planb.nicecupoftea.org/2020/10/24/libbybot-a-posable-remote-presence-bot-made-from-a-raspberry-pi-3-updates/">
  4047. libbybot</a>, which is a physical version of a person for remote
  4048. participation. I’m trying to think of a better name – she’s not all
  4049. about representing me, obviously, but anyone who can’t be somewhere
  4050. but wants to participate. [update Jan 15: she’s now called
  4051. “sock_puppet”].</p>
  4052. <p>This one is much, much simpler to make, thanks to the addition
  4053. of a pan-tilt hat and a simpler body. It’s also more expressive
  4054. thanks to <a href=
  4055. "https://shop.pimoroni.com/products/5x5-rgb-matrix-breakout">these
  4056. lovely little 5*5 led matrixes</a>.</p>
  4057. <p>Her main feature is that – using a laptop or phone – you can
  4058. see, hear and speak to people in a different physical place to you.
  4059. I used to use a version of this at work to be in meetings when I
  4060. was the only remote participant. That’s not much use now of course.
  4061. But perhaps in the future it might make sense for some people to be
  4062. remote and some present.</p>
  4063. <p>New recent features:</p>
  4064. <ul>
  4065. <li>easy to make*</li>
  4066. <li>wears clothes**</li>
  4067. <li>googly eyes</li>
  4068. <li>expressive mouth (moves when the remote participant is
  4069. speaking, can be happy, sad, etc, whatever can be expressed in 25
  4070. pixels)</li>
  4071. <li>can be “told” wifi details using QR codes</li>
  4072. <li>can move her head a bit (up / down / left / right)</li>
  4073. </ul>
  4074. <p>* ish<br />
  4075. **a sock</p>
  4076. <p>I’m still writing docs, but the repo is <a href=
  4077. "https://github.com/libbymiller/sock_puppet">here</a>.</p>
  4078. <div class="wp-block-group">
  4079. <div class=
  4080. "wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow">
  4081. <div class=
  4082. "wp-block-columns is-layout-flex wp-container-core-columns-is-layout-1 wp-block-columns-is-layout-flex">
  4083. <div class=
  4084. "wp-block-column is-layout-flow wp-block-column-is-layout-flow"
  4085. style="flex-basis:100%;">
  4086. <figure class="wp-block-image alignwide size-large"><img src=
  4087. "https://libbymiller.files.wordpress.com/2020/11/libbybot-lite-portrait.png?w=768"
  4088. alt="" />
  4089. <figcaption>Libbybot-lite – portrait by Damian</figcaption>
  4090. </figure>
  4091. </div>
  4092. </div>
  4093. </div>
  4094. </div>
  4095. </div>
  4096. </div>]]></content:encoded>
  4097.  <description>Makevember and lockdown have encouraged me to make an improved version of libbybot , which is a physical version of a person for remote participation. I’m trying to think of a better name – she’s not all about representing me, obviously, but anyone who can’t be somewhere but wants to participate. [update Jan 15: she’s now called “sock_puppet”]. This one is much, much simpler to make, thanks to the addition of a pan-tilt hat and a simpler body. It’s also more expressive thanks to these lovely little 5*5 led matrixes . Her main feature is that – using a laptop ...</description>
  4098. </item>
  4099. <item rdf:about="https://planb.nicecupoftea.org/2020/10/24/libbybot-a-posable-remote-presence-bot-made-from-a-raspberry-pi-3-updates/">
  4100.  <dc:creator>Libby Miller</dc:creator>
  4101.  <dc:source>Plan B by Libby Miller</dc:source>
  4102.  <dc:relation>http://planb.nicecupoftea.org/</dc:relation>
  4103.  <planet:content xmlns="http://www.w3.org/1999/xhtml" rdf:parseType="Literal">
  4104. <div>
  4105. <p>A couple of people have asked me about my
  4106. presence-robot-in-a-lamp, libbybot – unsurprising at the moment
  4107. maybe – so I’ve updated the code in <a href=
  4108. "https://github.com/libbymiller/libbybot_eleven">github</a> to use
  4109. the most recent <a href=
  4110. "https://www.rtcmulticonnection.org">RTCMultiConnection</a>
  4111. (webRTC) library and done a general tidy up.</p>
  4112. <p>I gave a presentation at EMFCamp about it a couple of years ago
  4113. – here are the slides:</p>
  4114. <div class="wp-block-file"><a href=
  4115. "https://libbymiller.files.wordpress.com/2020/10/libbybot_a_cheapo_posable-presence_robot_emfcamp_presentation.pdf">
  4116. libbybot – EMF 2018 talk</a><a href=
  4117. "https://libbymiller.files.wordpress.com/2020/10/libbybot_a_cheapo_posable-presence_robot_emfcamp_presentation.pdf"
  4118. class="wp-block-file__button">Download</a></div>
  4119. <figure class="wp-block-image size-large"><a href=
  4120. "https://libbymiller.files.wordpress.com/2020/10/68747470733a2f2f6c696262796d696c6c65722e66696c65732e776f726470726573732e636f6d2f323031372f30372f696d6167655f75706c6f616465645f66726f6d5f696f732e6a7067.jpeg">
  4121. <img width="1024" height="576" data-attachment-id="3315"
  4122. data-permalink=
  4123. "https://planb.nicecupoftea.org/68747470733a2f2f6c696262796d696c6c65722e66696c65732e776f726470726573732e636f6d2f323031372f30372f696d6167655f75706c6f616465645f66726f6d5f696f732e6a7067/"
  4124. data-orig-file=
  4125. "https://libbymiller.files.wordpress.com/2020/10/68747470733a2f2f6c696262796d696c6c65722e66696c65732e776f726470726573732e636f6d2f323031372f30372f696d6167655f75706c6f616465645f66726f6d5f696f732e6a7067.jpeg"
  4126. data-orig-size="1248,702" data-comments-opened="1" data-image-meta=
  4127. "{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;1&quot;}"
  4128. data-image-title=
  4129. "68747470733a2f2f6c696262796d696c6c65722e66696c65732e776f726470726573732e636f6d2f323031372f30372f696d6167655f75706c6f616465645f66726f6d5f696f732e6a7067"
  4130. data-image-description="" data-image-caption="" data-medium-file=
  4131. "https://libbymiller.files.wordpress.com/2020/10/68747470733a2f2f6c696262796d696c6c65722e66696c65732e776f726470726573732e636f6d2f323031372f30372f696d6167655f75706c6f616465645f66726f6d5f696f732e6a7067.jpeg?w=300"
  4132. data-large-file=
  4133. "https://libbymiller.files.wordpress.com/2020/10/68747470733a2f2f6c696262796d696c6c65722e66696c65732e776f726470726573732e636f6d2f323031372f30372f696d6167655f75706c6f616465645f66726f6d5f696f732e6a7067.jpeg?w=1024"
  4134. src=
  4135. "https://libbymiller.files.wordpress.com/2020/10/68747470733a2f2f6c696262796d696c6c65722e66696c65732e776f726470726573732e636f6d2f323031372f30372f696d6167655f75706c6f616465645f66726f6d5f696f732e6a7067.jpeg?w=1024"
  4136. alt="" class="wp-image-3315" srcset=
  4137. "https://libbymiller.files.wordpress.com/2020/10/68747470733a2f2f6c696262796d696c6c65722e66696c65732e776f726470726573732e636f6d2f323031372f30372f696d6167655f75706c6f616465645f66726f6d5f696f732e6a7067.jpeg?w=1024 1024w, https://libbymiller.files.wordpress.com/2020/10/68747470733a2f2f6c696262796d696c6c65722e66696c65732e776f726470726573732e636f6d2f323031372f30372f696d6167655f75706c6f616465645f66726f6d5f696f732e6a7067.jpeg?w=150 150w, https://libbymiller.files.wordpress.com/2020/10/68747470733a2f2f6c696262796d696c6c65722e66696c65732e776f726470726573732e636f6d2f323031372f30372f696d6167655f75706c6f616465645f66726f6d5f696f732e6a7067.jpeg?w=300 300w, https://libbymiller.files.wordpress.com/2020/10/68747470733a2f2f6c696262796d696c6c65722e66696c65732e776f726470726573732e636f6d2f323031372f30372f696d6167655f75706c6f616465645f66726f6d5f696f732e6a7067.jpeg?w=768 768w, https://libbymiller.files.wordpress.com/2020/10/68747470733a2f2f6c696262796d696c6c65722e66696c65732e776f726470726573732e636f6d2f323031372f30372f696d6167655f75706c6f616465645f66726f6d5f696f732e6a7067.jpeg 1248w"
  4138. sizes="(max-width: 1024px) 100vw, 1024px" /></a>
  4139. <figcaption>Libbybot</figcaption>
  4140. </figure>
  4141. </div>
  4142. </planet:content>
  4143.  <dc:date rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2024-03-11T14:09:56.000000Z</dc:date>
  4144.  <title>Libbybot – a posable remote presence bot made from a
  4145. Raspberry Pi 3 – updates</title>
  4146.  <link>https://planb.nicecupoftea.org/2020/10/24/libbybot-a-posable-remote-presence-bot-made-from-a-raspberry-pi-3-updates/</link>
  4147.  <content:encoded rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral"><![CDATA[
  4148. <div xmlns='http://www.w3.org/1999/xhtml'>
  4149. <div>
  4150. <p>A couple of people have asked me about my
  4151. presence-robot-in-a-lamp, libbybot – unsurprising at the moment
  4152. maybe – so I’ve updated the code in <a href=
  4153. "https://github.com/libbymiller/libbybot_eleven">github</a> to use
  4154. the most recent <a href=
  4155. "https://www.rtcmulticonnection.org">RTCMultiConnection</a>
  4156. (webRTC) library and done a general tidy up.</p>
  4157. <p>I gave a presentation at EMFCamp about it a couple of years ago
  4158. – here are the slides:</p>
  4159. <div class="wp-block-file"><a href=
  4160. "https://libbymiller.files.wordpress.com/2020/10/libbybot_a_cheapo_posable-presence_robot_emfcamp_presentation.pdf">
  4161. libbybot – EMF 2018 talk</a><a href=
  4162. "https://libbymiller.files.wordpress.com/2020/10/libbybot_a_cheapo_posable-presence_robot_emfcamp_presentation.pdf"
  4163. class="wp-block-file__button">Download</a></div>
  4164. <figure class="wp-block-image size-large"><a href=
  4165. "https://libbymiller.files.wordpress.com/2020/10/68747470733a2f2f6c696262796d696c6c65722e66696c65732e776f726470726573732e636f6d2f323031372f30372f696d6167655f75706c6f616465645f66726f6d5f696f732e6a7067.jpeg">
  4166. <img width="1024" height="576" data-attachment-id="3315"
  4167. data-permalink=
  4168. "https://planb.nicecupoftea.org/68747470733a2f2f6c696262796d696c6c65722e66696c65732e776f726470726573732e636f6d2f323031372f30372f696d6167655f75706c6f616465645f66726f6d5f696f732e6a7067/"
  4169. data-orig-file=
  4170. "https://libbymiller.files.wordpress.com/2020/10/68747470733a2f2f6c696262796d696c6c65722e66696c65732e776f726470726573732e636f6d2f323031372f30372f696d6167655f75706c6f616465645f66726f6d5f696f732e6a7067.jpeg"
  4171. data-orig-size="1248,702" data-comments-opened="1" data-image-meta=
  4172. "{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;1&quot;}"
  4173. data-image-title=
  4174. "68747470733a2f2f6c696262796d696c6c65722e66696c65732e776f726470726573732e636f6d2f323031372f30372f696d6167655f75706c6f616465645f66726f6d5f696f732e6a7067"
  4175. data-image-description="" data-image-caption="" data-medium-file=
  4176. "https://libbymiller.files.wordpress.com/2020/10/68747470733a2f2f6c696262796d696c6c65722e66696c65732e776f726470726573732e636f6d2f323031372f30372f696d6167655f75706c6f616465645f66726f6d5f696f732e6a7067.jpeg?w=300"
  4177. data-large-file=
  4178. "https://libbymiller.files.wordpress.com/2020/10/68747470733a2f2f6c696262796d696c6c65722e66696c65732e776f726470726573732e636f6d2f323031372f30372f696d6167655f75706c6f616465645f66726f6d5f696f732e6a7067.jpeg?w=1024"
  4179. src=
  4180. "https://libbymiller.files.wordpress.com/2020/10/68747470733a2f2f6c696262796d696c6c65722e66696c65732e776f726470726573732e636f6d2f323031372f30372f696d6167655f75706c6f616465645f66726f6d5f696f732e6a7067.jpeg?w=1024"
  4181. alt="" class="wp-image-3315" srcset=
  4182. "https://libbymiller.files.wordpress.com/2020/10/68747470733a2f2f6c696262796d696c6c65722e66696c65732e776f726470726573732e636f6d2f323031372f30372f696d6167655f75706c6f616465645f66726f6d5f696f732e6a7067.jpeg?w=1024 1024w, https://libbymiller.files.wordpress.com/2020/10/68747470733a2f2f6c696262796d696c6c65722e66696c65732e776f726470726573732e636f6d2f323031372f30372f696d6167655f75706c6f616465645f66726f6d5f696f732e6a7067.jpeg?w=150 150w, https://libbymiller.files.wordpress.com/2020/10/68747470733a2f2f6c696262796d696c6c65722e66696c65732e776f726470726573732e636f6d2f323031372f30372f696d6167655f75706c6f616465645f66726f6d5f696f732e6a7067.jpeg?w=300 300w, https://libbymiller.files.wordpress.com/2020/10/68747470733a2f2f6c696262796d696c6c65722e66696c65732e776f726470726573732e636f6d2f323031372f30372f696d6167655f75706c6f616465645f66726f6d5f696f732e6a7067.jpeg?w=768 768w, https://libbymiller.files.wordpress.com/2020/10/68747470733a2f2f6c696262796d696c6c65722e66696c65732e776f726470726573732e636f6d2f323031372f30372f696d6167655f75706c6f616465645f66726f6d5f696f732e6a7067.jpeg 1248w"
  4183. sizes="(max-width: 1024px) 100vw, 1024px" /></a>
  4184. <figcaption>Libbybot</figcaption>
  4185. </figure>
  4186. </div>
  4187. </div>]]></content:encoded>
  4188.  <description>
  4189. A couple of people have asked me about my
  4190. presence-robot-in-a-lamp, libbybot – unsurprising at the moment
  4191. maybe – so I’ve updated the code in  github  to use
  4192. the most recent  RTCMultiConnection
  4193. (webRTC) library and done a general tidy up.
  4194. I gave a presentation at EMFCamp about it a couple of years ago
  4195. – here are the slides:
  4196.  
  4197. libbybot – EMF 2018 talk  Download  
  4198.  
  4199.  
  4200. Libbybot
  4201. </description>
  4202. </item>
  4203. <item rdf:about="https://industrial-inference.com/2019/09/12/knowledge-graphs-101/">
  4204.  <dc:creator>Andrew Matthews</dc:creator>
  4205.  <dc:source>The Wandering Glitch 2 by Andrew Matthews</dc:source>
  4206.  <dc:relation>http://aabs.wordpress.com/</dc:relation>
  4207.  <planet:content xmlns="http://www.w3.org/1999/xhtml" rdf:parseType="Literal">
  4208. <div>This is the first in a short series introducing Knowledge
  4209. Graphs. It covers just the basics, showing how to write, store,
  4210. query and work with graph data using RDF (short for Resource
  4211. Description Format). I will keep it free of theory and interesting
  4212. but unnecessary digressions. Let me know in the comments if you
  4213. find […]</div>
  4214. </planet:content>
  4215.  <dc:date rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2024-03-11T14:09:55.000000Z</dc:date>
  4216.  <title>Knowledge Graphs 101</title>
  4217.  <link>https://industrial-inference.com/2019/09/12/knowledge-graphs-101/</link>
  4218.  <content:encoded rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral"><![CDATA[
  4219. <div xmlns='http://www.w3.org/1999/xhtml'>
  4220. <div>This is the first in a short series introducing Knowledge
  4221. Graphs. It covers just the basics, showing how to write, store,
  4222. query and work with graph data using RDF (short for Resource
  4223. Description Format). I will keep it free of theory and interesting
  4224. but unnecessary digressions. Let me know in the comments if you
  4225. find […]</div>
  4226. </div>]]></content:encoded>
  4227.  <description>
  4228. This is the first in a short series introducing Knowledge
  4229. Graphs. It covers just the basics, showing how to write, store,
  4230. query and work with graph data using RDF (short for Resource
  4231. Description Format). I will keep it free of theory and interesting
  4232. but unnecessary digressions. Let me know in the comments if you
  4233. find […]
  4234. </description>
  4235. </item>
  4236. <item rdf:about="https://industrial-inference.com/2011/05/14/preparing-a-project-gutenberg-book-for-use-on-a-6-ereader/">
  4237.  <dc:creator>Andrew Matthews</dc:creator>
  4238.  <dc:source>The Wandering Glitch 2 by Andrew Matthews</dc:source>
  4239.  <dc:relation>http://aabs.wordpress.com/</dc:relation>
  4240.  <planet:content xmlns="http://www.w3.org/1999/xhtml" rdf:parseType="Literal">
  4241. <div>For a while I’ve been trying to find a nice way to convert
  4242. project Gutenberg books to look pleasant on a BeBook One. I’ve
  4243. finally hit on the perfect combination of tools, that produces
  4244. documents ideally suited to 6″ eInk ebook readers like my BeBook.
  4245. The tool chain involves using GutenMark to convert the file
  4246. […]</div>
  4247. </planet:content>
  4248.  <dc:date rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2024-03-11T14:09:55.000000Z</dc:date>
  4249.  <title>Preparing a Project Gutenberg ebook for use on a 6″
  4250. ereader</title>
  4251.  <link>https://industrial-inference.com/2011/05/14/preparing-a-project-gutenberg-book-for-use-on-a-6-ereader/</link>
  4252.  <content:encoded rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral"><![CDATA[
  4253. <div xmlns='http://www.w3.org/1999/xhtml'>
  4254. <div>For a while I’ve been trying to find a nice way to convert
  4255. project Gutenberg books to look pleasant on a BeBook One. I’ve
  4256. finally hit on the perfect combination of tools, that produces
  4257. documents ideally suited to 6″ eInk ebook readers like my BeBook.
  4258. The tool chain involves using GutenMark to convert the file
  4259. […]</div>
  4260. </div>]]></content:encoded>
  4261.  <description>
  4262. For a while I’ve been trying to find a nice way to convert
  4263. project Gutenberg books to look pleasant on a BeBook One. I’ve
  4264. finally hit on the perfect combination of tools, that produces
  4265. documents ideally suited to 6″ eInk ebook readers like my BeBook.
  4266. The tool chain involves using GutenMark to convert the file
  4267. […]
  4268. </description>
  4269. </item>
  4270. <item rdf:about="https://industrial-inference.com/2011/04/11/some-pictures-of-carlton-gardens/">
  4271.  <dc:creator>Andrew Matthews</dc:creator>
  4272.  <dc:source>The Wandering Glitch 2 by Andrew Matthews</dc:source>
  4273.  <dc:relation>http://aabs.wordpress.com/</dc:relation>
  4274.  <planet:content xmlns="http://www.w3.org/1999/xhtml" rdf:parseType="Literal">
  4275. <div>Carlton Gardens, a set on Flickr. This was my first outing
  4276. with the Pentax K-x that I got recently. In these pictures, I’m
  4277. trying to get to grips with the camera, so I didn’t have any
  4278. particular objective other than to take pictures. The light was so
  4279. harsh it was very difficult for me to […]</div>
  4280. </planet:content>
  4281.  <dc:date rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2024-03-11T14:09:55.000000Z</dc:date>
  4282.  <title>Some pictures of Carlton Gardens</title>
  4283.  <link>https://industrial-inference.com/2011/04/11/some-pictures-of-carlton-gardens/</link>
  4284.  <content:encoded rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral"><![CDATA[
  4285. <div xmlns='http://www.w3.org/1999/xhtml'>
  4286. <div>Carlton Gardens, a set on Flickr. This was my first outing
  4287. with the Pentax K-x that I got recently. In these pictures, I’m
  4288. trying to get to grips with the camera, so I didn’t have any
  4289. particular objective other than to take pictures. The light was so
  4290. harsh it was very difficult for me to […]</div>
  4291. </div>]]></content:encoded>
  4292.  <description>
  4293. Carlton Gardens, a set on Flickr. This was my first outing
  4294. with the Pentax K-x that I got recently. In these pictures, I’m
  4295. trying to get to grips with the camera, so I didn’t have any
  4296. particular objective other than to take pictures. The light was so
  4297. harsh it was very difficult for me to […]
  4298. </description>
  4299. </item>
  4300. <item rdf:about="https://industrial-inference.com/2010/08/31/note-to-self-convert-utf-8-w-bom-to-ascii-wix-db-using-gnu-uconv/">
  4301.  <dc:creator>Andrew Matthews</dc:creator>
  4302.  <dc:source>The Wandering Glitch 2 by Andrew Matthews</dc:source>
  4303.  <dc:relation>http://aabs.wordpress.com/</dc:relation>
  4304.  <planet:content xmlns="http://www.w3.org/1999/xhtml" rdf:parseType="Literal">
  4305. <div>This one took me a long time to work out, and it took a
  4306. non-latin alphabet user (Russian) to point me at the right tools.
  4307. Yet again, I’m guilty of being a complacent anglophone. I was
  4308. producing a database installer project using WIX 3.5, and ran into
  4309. all sorts of inexplicable problems, which I finally […]</div>
  4310. </planet:content>
  4311.  <dc:date rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2024-03-11T14:09:55.000000Z</dc:date>
  4312.  <title>Note to Self: Convert UTF-8 w/ BOM to ASCII (WIX + DB) using
  4313. GNU uconv</title>
  4314.  <link>https://industrial-inference.com/2010/08/31/note-to-self-convert-utf-8-w-bom-to-ascii-wix-db-using-gnu-uconv/</link>
  4315.  <content:encoded rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral"><![CDATA[
  4316. <div xmlns='http://www.w3.org/1999/xhtml'>
  4317. <div>This one took me a long time to work out, and it took a
  4318. non-latin alphabet user (Russian) to point me at the right tools.
  4319. Yet again, I’m guilty of being a complacent anglophone. I was
  4320. producing a database installer project using WIX 3.5, and ran into
  4321. all sorts of inexplicable problems, which I finally […]</div>
  4322. </div>]]></content:encoded>
  4323.  <description>
  4324. This one took me a long time to work out, and it took a
  4325. non-latin alphabet user (Russian) to point me at the right tools.
  4326. Yet again, I’m guilty of being a complacent anglophone. I was
  4327. producing a database installer project using WIX 3.5, and ran into
  4328. all sorts of inexplicable problems, which I finally […]
  4329. </description>
  4330. </item>
  4331. <item rdf:about="https://industrial-inference.com/2010/03/10/programming-with-petri-nets/">
  4332.  <dc:creator>Andrew Matthews</dc:creator>
  4333.  <dc:source>The Wandering Glitch 2 by Andrew Matthews</dc:source>
  4334.  <dc:relation>http://aabs.wordpress.com/</dc:relation>
  4335.  <planet:content xmlns="http://www.w3.org/1999/xhtml" rdf:parseType="Literal">
  4336. <div>Petri Nets are extremely powerful and expressive, but they are
  4337. not as widely used as state machines. That's a pity, they allow us
  4338. to solve problems beyond the reach of state machines. This post is
  4339. the first in a mini-series on software development with Petri Nets.
  4340. All of the code for a full feature-complete Petri Net library is
  4341. available online at on GitHub. You're welcome to take a copy, play
  4342. with it and use it in your own projects.</div>
  4343. </planet:content>
  4344.  <dc:date rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2024-03-11T14:09:55.000000Z</dc:date>
  4345.  <title>Automata-Based Programming With Petri Nets – Part 1</title>
  4346.  <link>https://industrial-inference.com/2010/03/10/programming-with-petri-nets/</link>
  4347.  <content:encoded rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral"><![CDATA[
  4348. <div xmlns='http://www.w3.org/1999/xhtml'>
  4349. <div>Petri Nets are extremely powerful and expressive, but they are
  4350. not as widely used as state machines. That's a pity, they allow us
  4351. to solve problems beyond the reach of state machines. This post is
  4352. the first in a mini-series on software development with Petri Nets.
  4353. All of the code for a full feature-complete Petri Net library is
  4354. available online at on GitHub. You're welcome to take a copy, play
  4355. with it and use it in your own projects.</div>
  4356. </div>]]></content:encoded>
  4357.  <description>
  4358. Petri Nets are extremely powerful and expressive, but they are
  4359. not as widely used as state machines. That's a pity, they allow us
  4360. to solve problems beyond the reach of state machines. This post is
  4361. the first in a mini-series on software development with Petri Nets.
  4362. All of the code for a full feature-complete Petri Net library is
  4363. available online at on GitHub. You're welcome to take a copy, play
  4364. with it and use it in your own projects.
  4365. </description>
  4366. </item>
  4367. <item rdf:about="https://industrial-inference.com/2009/12/08/quantum-reasoners-hold-key-to-future-web/">
  4368.  <dc:creator>Andrew Matthews</dc:creator>
  4369.  <dc:source>The Wandering Glitch 2 by Andrew Matthews</dc:source>
  4370.  <dc:relation>http://aabs.wordpress.com/</dc:relation>
  4371.  <planet:content xmlns="http://www.w3.org/1999/xhtml" rdf:parseType="Literal">
  4372. <div>Last year, a company called DWave Systems announced their
  4373. quantum computer (the ‘Orion’) – another milestone on the road to
  4374. practical quantum computing. Their controversial claims seem worthy
  4375. in their own right but they are particularly important to the
  4376. semantic web (SW) community. The significance to the SW community
  4377. was that their quantum computer solved […]</div>
  4378. </planet:content>
  4379.  <dc:date rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2024-03-11T14:09:55.000000Z</dc:date>
  4380.  <title>Quantum Reasoners Hold Key to Future Web</title>
  4381.  <link>https://industrial-inference.com/2009/12/08/quantum-reasoners-hold-key-to-future-web/</link>
  4382.  <content:encoded rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral"><![CDATA[
  4383. <div xmlns='http://www.w3.org/1999/xhtml'>
  4384. <div>Last year, a company called DWave Systems announced their
  4385. quantum computer (the ‘Orion’) – another milestone on the road to
  4386. practical quantum computing. Their controversial claims seem worthy
  4387. in their own right but they are particularly important to the
  4388. semantic web (SW) community. The significance to the SW community
  4389. was that their quantum computer solved […]</div>
  4390. </div>]]></content:encoded>
  4391.  <description>
  4392. Last year, a company called DWave Systems announced their
  4393. quantum computer (the ‘Orion’) – another milestone on the road to
  4394. practical quantum computing. Their controversial claims seem worthy
  4395. in their own right but they are particularly important to the
  4396. semantic web (SW) community. The significance to the SW community
  4397. was that their quantum computer solved […]
  4398. </description>
  4399. </item>
  4400. <item rdf:about="https://industrial-inference.com/2009/11/13/semantic-overflow-highlights-i/">
  4401.  <dc:creator>Andrew Matthews</dc:creator>
  4402.  <dc:source>The Wandering Glitch 2 by Andrew Matthews</dc:source>
  4403.  <dc:relation>http://aabs.wordpress.com/</dc:relation>
  4404.  <planet:content xmlns="http://www.w3.org/1999/xhtml" rdf:parseType="Literal">
  4405. <div>Semantic Overflow has been active for a couple of weeks. We
  4406. now have 155 users and 53 questions. We’ve already had some very
  4407. interesting questions and some excellent detailed and thoughtful
  4408. responses. I thought, on Egon’s instigation, to&#160; bring
  4409. together, from the site’s BI stats, some of the highlights of last
  4410. week. The best loved […]</div>
  4411. </planet:content>
  4412.  <dc:date rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2024-03-11T14:09:55.000000Z</dc:date>
  4413.  <title>Semantic Overflow Highlights I</title>
  4414.  <link>https://industrial-inference.com/2009/11/13/semantic-overflow-highlights-i/</link>
  4415.  <content:encoded rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral"><![CDATA[
  4416. <div xmlns='http://www.w3.org/1999/xhtml'>
  4417. <div>Semantic Overflow has been active for a couple of weeks. We
  4418. now have 155 users and 53 questions. We’ve already had some very
  4419. interesting questions and some excellent detailed and thoughtful
  4420. responses. I thought, on Egon’s instigation, to&#160; bring
  4421. together, from the site’s BI stats, some of the highlights of last
  4422. week. The best loved […]</div>
  4423. </div>]]></content:encoded>
  4424.  <description>
  4425. Semantic Overflow has been active for a couple of weeks. We
  4426. now have 155 users and 53 questions. We’ve already had some very
  4427. interesting questions and some excellent detailed and thoughtful
  4428. responses. I thought, on Egon’s instigation, to&amp;#160; bring
  4429. together, from the site’s BI stats, some of the highlights of last
  4430. week. The best loved […]
  4431. </description>
  4432. </item>
  4433. <item rdf:about="https://industrial-inference.com/2009/10/27/www-semanticoverflow-com-the-web-2-0-qa-site-for-all-things-web-3-0/">
  4434.  <dc:creator>Andrew Matthews</dc:creator>
  4435.  <dc:source>The Wandering Glitch 2 by Andrew Matthews</dc:source>
  4436.  <dc:relation>http://aabs.wordpress.com/</dc:relation>
  4437.  <planet:content xmlns="http://www.w3.org/1999/xhtml" rdf:parseType="Literal">
  4438. <div>www.SemanticOverflow.com is a new site based on the hugely
  4439. popular StackOverflow.com, devoted to Q&amp;A on anything related
  4440. to the semantic web. The site is very new (created today) and I’m
  4441. trying to get as many people to visit as I can, so please come and
  4442. post your questions and together we’ll create a thriving community
  4443. […]</div>
  4444. </planet:content>
  4445.  <dc:date rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2024-03-11T14:09:55.000000Z</dc:date>
  4446.  <title>www.SemanticOverflow.com – the Web 2.0 Q&amp;A site for all
  4447. things Web 3.0.</title>
  4448.  <link>https://industrial-inference.com/2009/10/27/www-semanticoverflow-com-the-web-2-0-qa-site-for-all-things-web-3-0/</link>
  4449.  <content:encoded rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral"><![CDATA[
  4450. <div xmlns='http://www.w3.org/1999/xhtml'>
  4451. <div>www.SemanticOverflow.com is a new site based on the hugely
  4452. popular StackOverflow.com, devoted to Q&amp;A on anything related
  4453. to the semantic web. The site is very new (created today) and I’m
  4454. trying to get as many people to visit as I can, so please come and
  4455. post your questions and together we’ll create a thriving community
  4456. […]</div>
  4457. </div>]]></content:encoded>
  4458.  <description>
  4459. www.SemanticOverflow.com is a new site based on the hugely
  4460. popular StackOverflow.com, devoted to Q&amp;amp;A on anything related
  4461. to the semantic web. The site is very new (created today) and I’m
  4462. trying to get as many people to visit as I can, so please come and
  4463. post your questions and together we’ll create a thriving community
  4464. […]
  4465. </description>
  4466. </item>
  4467. <item rdf:about="https://industrial-inference.com/2009/03/20/quote-of-the-day-chris-sells-on-cocktail-parties/">
  4468.  <dc:creator>Andrew Matthews</dc:creator>
  4469.  <dc:source>The Wandering Glitch 2 by Andrew Matthews</dc:source>
  4470.  <dc:relation>http://aabs.wordpress.com/</dc:relation>
  4471.  <planet:content xmlns="http://www.w3.org/1999/xhtml" rdf:parseType="Literal">
  4472. <div>I can relate to this: I’ll take a lake of fire any day over
  4473. more than three strangers in a room with which I share no common
  4474. task and with whom I’m expected to socialize How to express this to
  4475. my wife without her thinking that I am suffering from a combination
  4476. of acrophobia and […]</div>
  4477. </planet:content>
  4478.  <dc:date rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2024-03-11T14:09:55.000000Z</dc:date>
  4479.  <title>Quote of the Day – Chris Sells on Cocktail Parties</title>
  4480.  <link>https://industrial-inference.com/2009/03/20/quote-of-the-day-chris-sells-on-cocktail-parties/</link>
  4481.  <content:encoded rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral"><![CDATA[
  4482. <div xmlns='http://www.w3.org/1999/xhtml'>
  4483. <div>I can relate to this: I’ll take a lake of fire any day over
  4484. more than three strangers in a room with which I share no common
  4485. task and with whom I’m expected to socialize How to express this to
  4486. my wife without her thinking that I am suffering from a combination
  4487. of acrophobia and […]</div>
  4488. </div>]]></content:encoded>
  4489.  <description>
  4490. I can relate to this: I’ll take a lake of fire any day over
  4491. more than three strangers in a room with which I share no common
  4492. task and with whom I’m expected to socialize How to express this to
  4493. my wife without her thinking that I am suffering from a combination
  4494. of acrophobia and […]
  4495. </description>
  4496. </item>
  4497. <item rdf:about="https://industrial-inference.com/2009/02/27/australian-port-a-new-wmd/">
  4498.  <dc:creator>Andrew Matthews</dc:creator>
  4499.  <dc:source>The Wandering Glitch 2 by Andrew Matthews</dc:source>
  4500.  <dc:relation>http://aabs.wordpress.com/</dc:relation>
  4501.  <planet:content xmlns="http://www.w3.org/1999/xhtml" rdf:parseType="Literal">
  4502. <div>Proving that Cockroaches are not indestructible, Kerry neatly
  4503. (if inadvertently) demonstrated that Australian port is capable of
  4504. killing things that heat, cold and lethal levels of ionizing
  4505. radiation cannot. Of course Kerry was gagging for days just at the
  4506. thought that the thing had been in her glass all along – it
  4507. probably hadn’t – […]</div>
  4508. </planet:content>
  4509.  <dc:date rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2024-03-11T14:09:55.000000Z</dc:date>
  4510.  <title>Australian Port – a new WMD?</title>
  4511.  <link>https://industrial-inference.com/2009/02/27/australian-port-a-new-wmd/</link>
  4512.  <content:encoded rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral"><![CDATA[
  4513. <div xmlns='http://www.w3.org/1999/xhtml'>
  4514. <div>Proving that Cockroaches are not indestructible, Kerry neatly
  4515. (if inadvertently) demonstrated that Australian port is capable of
  4516. killing things that heat, cold and lethal levels of ionizing
  4517. radiation cannot. Of course Kerry was gagging for days just at the
  4518. thought that the thing had been in her glass all along – it
  4519. probably hadn’t – […]</div>
  4520. </div>]]></content:encoded>
  4521.  <description>
  4522. Proving that Cockroaches are not indestructible, Kerry neatly
  4523. (if inadvertently) demonstrated that Australian port is capable of
  4524. killing things that heat, cold and lethal levels of ionizing
  4525. radiation cannot. Of course Kerry was gagging for days just at the
  4526. thought that the thing had been in her glass all along – it
  4527. probably hadn’t – […]
  4528. </description>
  4529. </item>
  4530. <item rdf:about="https://industrial-inference.com/2008/11/18/relational-modeling-not-as-we-know-it/">
  4531.  <dc:creator>Andrew Matthews</dc:creator>
  4532.  <dc:source>The Wandering Glitch 2 by Andrew Matthews</dc:source>
  4533.  <dc:relation>http://aabs.wordpress.com/</dc:relation>
  4534.  <planet:content xmlns="http://www.w3.org/1999/xhtml" rdf:parseType="Literal">
  4535. <div>... there's plenty of ways that RDF specifically addresses the
  4536. problems it seeks to address - data interchange, standards
  4537. definition, KR, mashups - in a distributed web-wide way. RDBMSs
  4538. address the problems that were faced by programmers at the coal
  4539. face in the 60s and 70s - Efficient, Standardized,
  4540. platform-independent data storage and retrieval. The imperative
  4541. that created a need for RDBMSs in the 60s is not going away, so I
  4542. doubt databases will be going away any time soon either. In fact
  4543. they can be exposed to the world as triples without too much
  4544. trouble. The problem is that developers need more than just data
  4545. storage and retrieval. They need <i>intelligent</i> data storage
  4546. and retrieval.</div>
  4547. </planet:content>
  4548.  <dc:date rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2024-03-11T14:09:55.000000Z</dc:date>
  4549.  <title>Relational Modeling? Not as we know it!</title>
  4550.  <link>https://industrial-inference.com/2008/11/18/relational-modeling-not-as-we-know-it/</link>
  4551.  <content:encoded rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral"><![CDATA[
  4552. <div xmlns='http://www.w3.org/1999/xhtml'>
  4553. <div>... there's plenty of ways that RDF specifically addresses the
  4554. problems it seeks to address - data interchange, standards
  4555. definition, KR, mashups - in a distributed web-wide way. RDBMSs
  4556. address the problems that were faced by programmers at the coal
  4557. face in the 60s and 70s - Efficient, Standardized,
  4558. platform-independent data storage and retrieval. The imperative
  4559. that created a need for RDBMSs in the 60s is not going away, so I
  4560. doubt databases will be going away any time soon either. In fact
  4561. they can be exposed to the world as triples without too much
  4562. trouble. The problem is that developers need more than just data
  4563. storage and retrieval. They need <i>intelligent</i> data storage
  4564. and retrieval.</div>
  4565. </div>]]></content:encoded>
  4566.  <description>... there's plenty of ways that RDF specifically addresses the problems it seeks to address - data interchange, standards definition, KR, mashups - in a distributed web-wide way. RDBMSs address the problems that were faced by programmers at the coal face in the 60s and 70s - Efficient, Standardized, platform-independent data storage and retrieval. The imperative that created a need for RDBMSs in the 60s is not going away, so I doubt databases will be going away any time soon either. In fact they can be exposed to the world as triples without too much trouble. The problem is that ...</description>
  4567. </item>
  4568. <item rdf:about="https://industrial-inference.com/2008/11/14/patternmatching/">
  4569.  <dc:creator>Andrew Matthews</dc:creator>
  4570.  <dc:source>The Wandering Glitch 2 by Andrew Matthews</dc:source>
  4571.  <dc:relation>http://aabs.wordpress.com/</dc:relation>
  4572.  <planet:content xmlns="http://www.w3.org/1999/xhtml" rdf:parseType="Literal">
  4573. <div>I recently used Matthew Podwyszocki’s pattern matching classes
  4574. for a top level exception handler in an App I’m writing. Matthew’s
  4575. classes are a really nice fluent interface attaching predicates to
  4576. functions generating results. I used it as a class factory to
  4577. select between handlers for exceptions. Here’s an example of how I
  4578. used it: ExceptionHandler […]</div>
  4579. </planet:content>
  4580.  <dc:date rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2024-03-11T14:09:55.000000Z</dc:date>
  4581.  <title>Pattern Matching in C#</title>
  4582.  <link>https://industrial-inference.com/2008/11/14/patternmatching/</link>
  4583.  <content:encoded rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral"><![CDATA[
  4584. <div xmlns='http://www.w3.org/1999/xhtml'>
  4585. <div>I recently used Matthew Podwyszocki’s pattern matching classes
  4586. for a top level exception handler in an App I’m writing. Matthew’s
  4587. classes are a really nice fluent interface attaching predicates to
  4588. functions generating results. I used it as a class factory to
  4589. select between handlers for exceptions. Here’s an example of how I
  4590. used it: ExceptionHandler […]</div>
  4591. </div>]]></content:encoded>
  4592.  <description>
  4593. I recently used Matthew Podwyszocki’s pattern matching classes
  4594. for a top level exception handler in an App I’m writing. Matthew’s
  4595. classes are a really nice fluent interface attaching predicates to
  4596. functions generating results. I used it as a class factory to
  4597. select between handlers for exceptions. Here’s an example of how I
  4598. used it: ExceptionHandler […]
  4599. </description>
  4600. </item>
  4601. <item rdf:about="https://industrial-inference.com/2008/09/23/object-orientation-not-as-we-know-it/">
  4602.  <dc:creator>Andrew Matthews</dc:creator>
  4603.  <dc:source>The Wandering Glitch 2 by Andrew Matthews</dc:source>
  4604.  <dc:relation>http://aabs.wordpress.com/</dc:relation>
  4605.  <planet:content xmlns="http://www.w3.org/1999/xhtml" rdf:parseType="Literal">
  4606. <div>I thought I’d start with a lyric: That one’s my mother and
  4607. That one’s my father and The one in the hat, that’s me. You could
  4608. be forgiven for wondering what Ani Difranco has to do with this
  4609. blog’s usual themes, but rest assured, I won’t stray too far. My
  4610. theme today is the limitations […]</div>
  4611. </planet:content>
  4612.  <dc:date rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2024-03-11T14:09:55.000000Z</dc:date>
  4613.  <title>Object Orientation? Not as we know it.</title>
  4614.  <link>https://industrial-inference.com/2008/09/23/object-orientation-not-as-we-know-it/</link>
  4615.  <content:encoded rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral"><![CDATA[
  4616. <div xmlns='http://www.w3.org/1999/xhtml'>
  4617. <div>I thought I’d start with a lyric: That one’s my mother and
  4618. That one’s my father and The one in the hat, that’s me. You could
  4619. be forgiven for wondering what Ani Difranco has to do with this
  4620. blog’s usual themes, but rest assured, I won’t stray too far. My
  4621. theme today is the limitations […]</div>
  4622. </div>]]></content:encoded>
  4623.  <description>
  4624. I thought I’d start with a lyric: That one’s my mother and
  4625. That one’s my father and The one in the hat, that’s me. You could
  4626. be forgiven for wondering what Ani Difranco has to do with this
  4627. blog’s usual themes, but rest assured, I won’t stray too far. My
  4628. theme today is the limitations […]
  4629. </description>
  4630. </item>
  4631. <item rdf:about="https://industrial-inference.com/2008/09/15/new-resources-for-linqtordf/">
  4632.  <dc:creator>Andrew Matthews</dc:creator>
  4633.  <dc:source>The Wandering Glitch 2 by Andrew Matthews</dc:source>
  4634.  <dc:relation>http://aabs.wordpress.com/</dc:relation>
  4635.  <planet:content xmlns="http://www.w3.org/1999/xhtml" rdf:parseType="Literal">
  4636. <div>John Mueller recently sent through a link to a series of
  4637. articles on working with RDF. As well as being a useful
  4638. introduction to working with RDF, they use LinqToRdf for code
  4639. examples. Modeling your Data with RDF (Part 1) Understanding and
  4640. Using Resource Description Framework Files (Part 2) They provide
  4641. information on hosting RDF […]</div>
  4642. </planet:content>
  4643.  <dc:date rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2024-03-11T14:09:55.000000Z</dc:date>
  4644.  <title>New Resources for LinqToRdf</title>
  4645.  <link>https://industrial-inference.com/2008/09/15/new-resources-for-linqtordf/</link>
  4646.  <content:encoded rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral"><![CDATA[
  4647. <div xmlns='http://www.w3.org/1999/xhtml'>
  4648. <div>John Mueller recently sent through a link to a series of
  4649. articles on working with RDF. As well as being a useful
  4650. introduction to working with RDF, they use LinqToRdf for code
  4651. examples. Modeling your Data with RDF (Part 1) Understanding and
  4652. Using Resource Description Framework Files (Part 2) They provide
  4653. information on hosting RDF […]</div>
  4654. </div>]]></content:encoded>
  4655.  <description>
  4656. John Mueller recently sent through a link to a series of
  4657. articles on working with RDF. As well as being a useful
  4658. introduction to working with RDF, they use LinqToRdf for code
  4659. examples. Modeling your Data with RDF (Part 1) Understanding and
  4660. Using Resource Description Framework Files (Part 2) They provide
  4661. information on hosting RDF […]
  4662. </description>
  4663. </item>
  4664. <item rdf:about="https://industrial-inference.com/2008/08/27/not-another-mapping-markup-language/">
  4665.  <dc:creator>Andrew Matthews</dc:creator>
  4666.  <dc:source>The Wandering Glitch 2 by Andrew Matthews</dc:source>
  4667.  <dc:relation>http://aabs.wordpress.com/</dc:relation>
  4668.  <planet:content xmlns="http://www.w3.org/1999/xhtml" rdf:parseType="Literal">
  4669. <div>Kingsley Idehen has again graciously given LinqToRdf some much
  4670. needed link-love. He mentioned it in a post that was primarily
  4671. concerned with the issues of mapping between the ontology,
  4672. relational and object domains. His assertion is that LinqtoRdf,
  4673. being an offshoot of an ORM related initiative, is reversing the
  4674. natural order of mappings. He believes […]</div>
  4675. </planet:content>
  4676.  <dc:date rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2024-03-11T14:09:55.000000Z</dc:date>
  4677.  <title>Not another mapping markup language!</title>
  4678.  <link>https://industrial-inference.com/2008/08/27/not-another-mapping-markup-language/</link>
  4679.  <content:encoded rdf:datatype="http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral"><![CDATA[
  4680. <div xmlns='http://www.w3.org/1999/xhtml'>
  4681. <div>Kingsley Idehen has again graciously given LinqToRdf some much
  4682. needed link-love. He mentioned it in a post that was primarily
  4683. concerned with the issues of mapping between the ontology,
  4684. relational and object domains. His assertion is that LinqtoRdf,
  4685. being an offshoot of an ORM related initiative, is reversing the
  4686. natural order of mappings. He believes […]</div>
  4687. </div>]]></content:encoded>
  4688.  <description>
  4689. Kingsley Idehen has again graciously given LinqToRdf some much
  4690. needed link-love. He mentioned it in a post that was primarily
  4691. concerned with the issues of mapping between the ontology,
  4692. relational and object domains. His assertion is that LinqtoRdf,
  4693. being an offshoot of an ORM related initiative, is reversing the
  4694. natural order of mappings. He believes […]
  4695. </description>
  4696. </item>
  4697. </rdf:RDF>

If you would like to create a banner that links to this page (i.e. this validation result), do the following:

  1. Download the "valid RSS" banner.

  2. Upload the image to your own server. (This step is important. Please do not link directly to the image on this server.)

  3. Add this HTML to your page (change the image src attribute if necessary):

If you would like to create a text link instead, here is the URL you can use:

http://www.feedvalidator.org/check.cgi?url=http%3A//planetrdf.com/index.rdf

Copyright © 2002-9 Sam Ruby, Mark Pilgrim, Joseph Walton, and Phil Ringnalda