<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Frederick Giasson's Weblog &#187; irON</title>
	<atom:link href="http://fgiasson.com/blog/index.php/category/structured-dynamics/iron/feed/" rel="self" type="application/rss+xml" />
	<link>http://fgiasson.com/blog</link>
	<description></description>
	<lastBuildDate>Wed, 25 Jan 2012 20:18:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Role and Use of Ontologies in the Open Semantic Framework</title>
		<link>http://fgiasson.com/blog/index.php/2011/12/05/role-and-use-of-ontologies-in-the-open-semantic-framework/</link>
		<comments>http://fgiasson.com/blog/index.php/2011/12/05/role-and-use-of-ontologies-in-the-open-semantic-framework/#comments</comments>
		<pubDate>Mon, 05 Dec 2011 18:02:14 +0000</pubDate>
		<dc:creator>Frederick Giasson</dc:creator>
				<category><![CDATA[Citizen DAN]]></category>
		<category><![CDATA[conStruct]]></category>
		<category><![CDATA[irON]]></category>
		<category><![CDATA[Open Semantic Framework]]></category>
		<category><![CDATA[Semantic Components]]></category>
		<category><![CDATA[Semantic Web]]></category>
		<category><![CDATA[Structured Dynamics]]></category>
		<category><![CDATA[structWSF]]></category>
		<category><![CDATA[#data]]></category>
		<category><![CDATA[#data integration]]></category>
		<category><![CDATA[#ontology]]></category>
		<category><![CDATA[#open semantic framework]]></category>
		<category><![CDATA[#rdf]]></category>
		<category><![CDATA[#semantic web]]></category>

		<guid isPermaLink="false">http://fgiasson.com/blog/?p=1740</guid>
		<description><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=Role and Use of Ontologies in the Open Semantic Framework&amp;rft.aulast=Giasson&amp;rft.aufirst=Frederick&amp;rft.subject=Citizen DAN&amp;rft.subject=conStruct&amp;rft.subject=irON&amp;rft.subject=Open Semantic Framework&amp;rft.subject=Semantic Components&amp;rft.subject=Semantic Web&amp;rft.subject=Structured Dynamics&amp;rft.subject=structWSF&amp;rft.source=Frederick Giasson&#8217;s Weblog&amp;rft.date=2011-12-05&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://fgiasson.com/blog/index.php/2011/12/05/role-and-use-of-ontologies-in-the-open-semantic-framework/&amp;rft.language=English"></span>
Ontologies are to the Open Semantic Framework what humans were to the Mechanical Turk. The hidden human in the Mechanical Turk was orchestrating all and every chess move. However, to the observers, the automated chess machine was looking just like it: a new kind of intelligent machine. We were in 1770. Ontologies plays exactly the [...]]]></description>
			<content:encoded><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=Role and Use of Ontologies in the Open Semantic Framework&amp;rft.aulast=Giasson&amp;rft.aufirst=Frederick&amp;rft.subject=Citizen DAN&amp;rft.subject=conStruct&amp;rft.subject=irON&amp;rft.subject=Open Semantic Framework&amp;rft.subject=Semantic Components&amp;rft.subject=Semantic Web&amp;rft.subject=Structured Dynamics&amp;rft.subject=structWSF&amp;rft.source=Frederick Giasson&#8217;s Weblog&amp;rft.date=2011-12-05&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://fgiasson.com/blog/index.php/2011/12/05/role-and-use-of-ontologies-in-the-open-semantic-framework/&amp;rft.language=English"></span>
<table>
<tbody>
<tr>
<td style="padding: 3px;">Ontologies are to the <a title="Open Semantic Framework" href="http://techwiki.openstructs.org/index.php/Open_Semantic_Framework">Open Semantic Framework</a> what humans were to the <a title="Mechanical Turk" href="http://en.wikipedia.org/wiki/The_Turk">Mechanical Turk</a>. The hidden human in the Mechanical Turk was orchestrating all and every chess move. However, to the observers, the <em>automated</em> chess machine was looking just like it: a new kind of intelligent machine. We were in 1770.</td>
<td style="padding: 3px;"><a href="http://cache.gawkerassets.com/assets/images/8/2008/09/mechanical_turk.png"><div style="margin:10px;overflow:hidden;display:table;line-height:0;text-align:center;width:180px;" class="aligncenter"><img class=" size-medium wp-image-1748" style="shadow_curl; padding:0 !important; margin:0 !important; max-width:100% !important;" title="Mechanical Turk" src="http://fgiasson.com/blog/wp-content/uploads/2011/12/mechanical_turk-300x274.png" alt="" width="180" height="164" /><br/><img src="http://fgiasson.com/blog/wp-content/plugins/shadows/shadow_curl.png" class="shadow_img" style="margin:0 !important;height:10px;width:100%;"></div></a></td>
</tr>
</tbody>
</table>
<p>Ontologies plays exactly the same role for the Open Semantic Framework (<em>OSF</em>): they orchestrate all and every moves for all the pieces within OSF. They are what instructs <a title="structWSF" href="http://openstructs.org/structwsf">structWSF</a>, the <a title="Semantic Components" href="http://openstructs.org/scomponent">Semantic Components</a>, <a title="conStruct" href="http://openstructs.org/construct">conStruct</a>, and all other derivate pieces of user interfaces how to behave.</p>
<p>In this (lengthy) blog post, I will present the main ontologies that have an impact on different parts of OSF. We will see how different ontology classes and properties, and how the description of the records indexed in the system, can impact the behaviors of OSF.</p>
<p>In addition to this post, Mike has also published a <a title="An Ontologies Architecture for Ontology Driven Applications" href="http://www.mkbergman.com/989/an-ontologies-architecture-for-ontology-driven-apps">blog post today</a> that overviews the overall OSF ontology modularization and architecture.</p>
<p><span id="more-1740"></span></p>
<h3>Constituent Ontologies</h3>
<p>Let&#8217;s take a look at the core ontologies used by the Open Semantic Framework. All these ontologies have been developed in relation to OSF. These, and other external ontologies, have the same role in OSF as the human does in the Mechanical Turk: they instruct the system how to behave.</p>
<p>Here is the list of the core ontologies:</p>
<ol>
<li>The <a title="SCO Ontology" href="http://techwiki.openstructs.org/index.php/SCO_Ontology">SCO Ontology</a> (Semantic Component Ontology)</li>
<li>The <a title="WSF Ontology" href="http://techwiki.openstructs.org/index.php/WSF_Ontology">WSF Ontology</a> (Web Service Framework Ontology)</li>
<li>The <a title="AGGR Ontology" href="http://techwiki.openstructs.org/index.php/AGGR_Ontology">AGGR Ontology</a> (Aggregation Ontology)</li>
<li>The <a title="IrON Ontology" href="http://techwiki.openstructs.org/index.php/IrON_Ontology">irON Ontology</a> (Instance Record an Object Notation Ontology)</li>
<li>One or more <a title="Domain Ontologies in OSF" href="http://techwiki.openstructs.org/index.php/Domain_Ontologies_in_OSF">domain ontologies</a>, to capture the concepts and relationships for the purposes of a given OSF installation, and</li>
<li>Possibly <a title="UMBEL: Overview and Relation to OSF" href="http://techwiki.openstructs.org/index.php/UMBEL:_Overview_and_Relation_to_OSF">UMBEL</a> or other upper-level concept ontologies, used for linkages to external systems.</li>
</ol>
<p>(<strong>Note:</strong> the internal wiki links to each of these ontologies also provides links to the actual ontology specifications on Github.)</p>
<p>A useful discussion of these ontologies and their interactions in an OSF instance is provided by the <a title="OSF Ontologies Modularization and Architecture" href="http://techwiki.openstructs.org/index.php/OSF_Ontologies_Modularization_and_Architecture">ontology modularization</a> document. This current document focuses primarily on the specific properties and roles associated with them in an OSF installation.</p>
<p>Depending on the specific OSF installation, of course, multiple external ontologies may also be employed. Some of the common external ones used in an OSF installation are described by the <a title="Common External Ontologies" href="http://techwiki.openstructs.org/index.php/Common_External_Ontologies">external ontologies</a> document. These external ontologies are important &#8212; indeed essential in order to ensure linkage to the external world &#8212; but have little to do with internal OSF control structures. That is why the rest of this discussion focused on internal ontologies only.</p>
<h3>Summary Ontology Roles</h3>
<p>Ontologies play pivotal roles across all parts of the framework. In a broad sense, the internal OSF ontologies are used for annotations, guiding interactions or relating concepts and information to other information. In specific terms, OSF ontologies may play one or more of these dozen or so roles:</p>
<ol>
<li>Define record descriptions</li>
<li>Inform interface displays</li>
<li>Integrate different data sources</li>
<li>Define component selections</li>
<li>Define component behaviors</li>
<li>Guide template selection</li>
<li>Provide reasoning and inference</li>
<li>Guide content filtering (with and without inference)</li>
<li>Tag concepts in text documents</li>
<li>Help organize and navigate Web portals</li>
<li>Manage datasets and ontologies, and</li>
<li>Set access permissions and registrations.</li>
</ol>
<p>In the remainder of this post, for each of these roles, we will see how ontologies affect numerous different parts of the OSF framework. These sections are presented in the order above.</p>
<h3>Define Records Descriptions</h3>
<p>A central role of ontologies in the Open Semantic Framework is their use to describe any kind of record that gets indexed and managed by the system. Since the framework indexes everything into the <a title="RDF Concept" href="http://techwiki.openstructs.org/index.php/RDF_Concept">RDF</a> data model, ontologies are needed as a schema to describe these RDF resources.</p>
<p>The irON ontology is specifically designed for record descriptions and notations. It interacts with all of the domain and (if used, UMBEL) upper level ontologies.</p>
<h3>Inform Interface Displays</h3>
<p>Ontologies have an impact in most of the user interfaces that display record information. The property that has the most impact is <code>iron:prefLabel</code>, which is used to display the label within the user interface that refers to a record or record attributes (properties). This label can be used within text, in a list control, in a tree control, or in any other kind of control that displays references to records.</p>
<p><strong>Note:</strong> there are also other properties that are considered as fallbacks to <code>iron:prefLabel</code> if a record has no triples using the <code>iron:prefLabel</code> property. These include <code>rdfs:label</code>, <code>dcterms:title</code>, <code>foaf:name</code>, etc.</p>
<h3>General User Interface Labels and Descriptions</h3>
<p>There are a few properties that have an impact on most of the components of the OSF stack, most of which come from the irON ontology. Here is the list of these irON properties that impact other parts of the system, mainly related to different user interfaces:</p>
<div align="center">
<table border="1" cellspacing="0" cellpadding="10">
<tbody>
<tr>
<td style="padding: 3px; background-color: #ffffe5; font: bold 100% sans-serif; text-align: center;"><strong>irON Property</strong></td>
<td style="padding: 3px; background-color: #ffffe5; font: bold 100% sans-serif; text-align: center;"><strong>Impact on the different user interfaces</strong></td>
</tr>
<tr>
<td style="padding: 3px;"><code>iron:prefLabel</code></td>
<td style="padding: 3px;">Preferred label to refer to an instance record or specific attribute (property)This impacts most of the user interfaces. As soon as a record is described using this property, the user interface uses it to refer to that record (as a link, in a list, as a word, etc.)</td>
</tr>
<tr>
<td style="padding: 3px;"><code>iron:altLabel</code></td>
<td style="padding: 3px;">Alternative label to refer to an instance record or specific attribute (property)This impacts most of the user interfaces. As soon as a record is described using this property, and that the user interface needs more than one label to refer to that record, it is displayed in the user interface (as a link, in a list, as a word, etc.)</td>
</tr>
<tr>
<td style="padding: 3px;"><code>iron:hiddenLabel</code></td>
<td style="padding: 3px;">Hidden label are labels that shouldn&#8217;t be displayed in any user interface, but that may be used by different systems for indexing purposesThis impacts on different indexation system such as <a title="Scones" href="http://techwiki.openstructs.org/index.php/Scones">Scones</a>. As soon as a record is described using this property, and that a system needs more words (synonyms) to use to describe that record, but that label shouldn&#8217;t be displayed in any user interface, these hidden labels will be used.</td>
</tr>
<tr>
<td style="padding: 3px;"><code>iron:description</code></td>
<td style="padding: 3px;">Description of an instance record.This impacts most of the user interfaces. As soon as a record is described using this property, and that the user interface needs a description to refers to that record, it will be displayed in the user interface (as a link, in a list, as a word, etc.)</td>
</tr>
<tr>
<td style="padding: 3px;"><code>iron:prefURL</code></td>
<td style="padding: 3px;">Preferred URL for an instance recordThis impacts most of the user interfaces. As soon as a record is described using this property, and that the user interface needs a web page URL to refer to that record, it will be displayed in the user interface (as a link)</td>
</tr>
</tbody>
</table>
</div>
<h3>User Interface &#8216;Short&#8217; Labels</h3>
<p>There are a few properties that impact most of the components of the OSF stack. Here is the list of SCO properties that impact other parts of the system, mainly related to different user interfaces:</p>
<div align="center">
<table border="1" cellspacing="0" cellpadding="10">
<tbody>
<tr>
<td style="padding: 3px; background-color: #ffffe5; font: bold 100% sans-serif; text-align: center;"><strong>SCO Property</strong></td>
<td style="padding: 3px; background-color: #ffffe5; font: bold 100% sans-serif; text-align: center;"><strong>Impact on the different user interfaces</strong></td>
</tr>
<tr>
<td style="padding: 3px;"><code>sco:shortLabel</code></td>
<td style="padding: 3px;">The short label is used to display a short version of the label of an attribute/type where it has to be displayed in a restrained region of a component.This impacts multiple different kinds of user interfaces (including the semantic components) in the way that if the user interface knows that the place available to display the label is limited, it will utilize the <code>sco:shortLabel</code> value before any other label values that may be defined for that record.</td>
</tr>
</tbody>
</table>
</div>
<h3>Hierarchical Displays</h3>
<p>The way ontologies define a class or a property structure also has an impact on different kinds of hierarchical displays. An example of this is the &#8220;Filter by Kinds&#8221; section of the <a title="Individual conStruct Search Tool" href="http://techwiki.openstructs.org/index.php/Individual_conStruct_Search_Tool">structSearch</a> and <a title="Individual conStruct Browse Tool" href="http://techwiki.openstructs.org/index.php/Individual_conStruct_Browse_Tool">structBrowse</a> modules. The possible filters that may be applied to a search query will be displayed to the user according to the hierarchy as defined in the ontologies.</p>
<h2>Integrate Heterogeneous Data Sources</h2>
<p>The principle reason why the Open Semantic Framework uses RDF and ontologies to describe all the data it indexes and manages is to facilitate data integration from multiple and heterogeneous data sources. The premise of using RDF and ontologies is:</p>
<div>The RDF framework, along with using ontologies as schema, is the most flexible means currently available to describe any kind of data. The RDF-ontology combination can be used to represent any data coming from any other source, data management system, format, or unstructured to structured basis for describing information. (See further the <a href="http://www.mkbergman.com/483/advantages-and-myths-of-rdf/" rel="nofollow">Advantages and Myths of RDF</a>.)</div>
<p>This foundation leads to the extreme flexibility of the Open Semantic Framework. The rationale behind this flexibility, and its benefits, has been described in many locations within this wiki. You may also want to see this article on <a href="../index.php/2011/09/27/one-of-semantic-webs-added-value/" rel="nofollow">One of the Semantic Web's Core Added Value</a>.</p>
<p>Ontologies have a dramatic &#8212; and positive &#8212; impact on the data integration and presentation tasks within an OSF instance.</p>
<h2>Define Component Selections</h2>
<p>A key aspect of the SCO Ontology is its use as the means to define what semantic components (or widgets) display what types of information within data records.</p>
<p>These assignments are done via the <a title="SControl" href="http://techwiki.openstructs.org/index.php/SControl">sControl</a> component. The properties for this component define what components may display what type (class) of data records. Here is the list of SCO properties that impact the sControl&#8217;s behaviors:</p>
<div align="center">
<table border="1" cellspacing="0" cellpadding="10">
<tbody>
<tr>
<td style="padding: 3px; background-color: #ffffe5; font: bold 100% sans-serif; text-align: center;"><strong>SCO Property</strong></td>
<td style="padding: 3px; background-color: #ffffe5; font: bold 100% sans-serif; text-align: center;"><strong>Impact on the sControl component</strong></td>
</tr>
<tr>
<td style="padding: 3px;"><code>sco:displayControl</code></td>
<td style="padding: 3px;">Annotate a class or a property to reference it to a display control. This indicates what are the semantic components that can normally be used to display some information about a record of a certain type, or a record that is described using some property.This property impacts the behavior of the sControl component in the sense that for a given record&#8217;s description, and a given ontology, the sControl component will select different semantic controls for displays. The actual information displayed and with what widget(s) depends on the type of the record and the properties that are used to describe it.</td>
</tr>
<tr>
<td style="padding: 3px;"><code>sco:comparableWith</code></td>
<td style="padding: 3px;">Is is possible to specify a &#8220;comparableWith&#8221; relation between two predicates. These comparable attributes have the same allowedValue(s), and the semantics of the predicates that are deemed comparable are the same. Since the kinds of values, and their semantics, are the same, they are then considered comparable.This property is normally applied when it is desirable, for example, to plot values of different attributes describing similar records on some visualization component (for example, a linear chart).This property impacts the behavior of the sControl component in the sense that for a given record&#8217;s description, and a given ontology, the sControl component will display information about multiple input records depending if the value of some of the properties used to describe it are comparable.</td>
</tr>
</tbody>
</table>
</div>
<h2>Define Component Behaviors</h2>
<p>In the Open Semantic Framework, one of the most important roles of ontologies is to define the interaction between different pieces of the system. Because of the extent of these interactions, this section is the longest and most detailed amongst all of the dozen or so ontology roles.</p>
<p>The SCO ontology can have multiple effects on multiple parts of an OSF instance. This section describes those interactions.</p>
<h3>sMap Component</h3>
<p>The <a title="SMap" href="http://techwiki.openstructs.org/index.php/SMap">sMap</a> component had different behaviors depending on how its input record is described. Here is the list of SCO properties that will have an impact on the sMap&#8217;s behaviors:</p>
<div align="center">
<table border="1" cellspacing="0" cellpadding="10">
<tbody>
<tr>
<td style="padding: 3px; background-color: #ffffe5; font: bold 100% sans-serif; text-align: center;"><strong>SCO Property</strong></td>
<td style="padding: 3px; background-color: #ffffe5; font: bold 100% sans-serif; text-align: center;"><strong>Impact on the sMap component</strong></td>
</tr>
<tr>
<td style="padding: 3px;"><code>sco:gisMap</code></td>
<td style="padding: 3px;">Reference a map binary file created created from a ShapeFile map file and <a href="http://github.com/sunlightlabs/clearmaps/tree/master/tools/" rel="nofollow">ClearMapsBuilder</a>. The referenced map file is a serialized ActionScript object.The <code>sco:gisMap</code> defines the first layout that is related to a given resource. Normally, this resource is part of the map related by the gisMap predicate. Read more about maps in the <a title="SMap" href="http://techwiki.openstructs.org/index.php/SMap">sMap</a>documentation page.There is only one gisMap relationship per resource, other relationships should be made with the <code>sco:relatedGisMap</code>predicate.This property impacts the behavior of the sMap component in the sense that it is the record&#8217;s description, and is the property that tells the component what map to render to the user.</td>
</tr>
<tr>
<td style="padding: 3px;"><code>sco:relatedGisMap</code></td>
<td style="padding: 3px;">Reference a map binary file created created from a ShapeFile map file and ClearMapsBuilder. The referenced map file is a serialized ActionScript object.The <code>sco:relatedGisMap</code> defines a related map layout that is related to a given resource. The resource is related to that map layer in some ways, but it is not necessarily part of the layer. Read more about maps in the <a title="SMap" href="http://techwiki.openstructs.org/index.php/SMap">sMap</a>documentation page.This property impacts the behavior of the sMap component in the sense that it is the record&#8217;s description, and is the property that tells the component what map to render to the user.</td>
</tr>
</tbody>
</table>
</div>
<h3>sWebMap Component</h3>
<p>The <a title="SWebMap" href="http://techwiki.openstructs.org/index.php/SWebMap">sWebMap</a> component has different behaviors depending on how its input record is described. Here is the list of SCO and <a href="https://github.com/structureddynamics/Ontologies-Open-Semantic-Framework/tree/master/wgs84" rel="nofollow">WGS84</a> properties that impact the behavior of an sWebMap:</p>
<div align="center">
<table border="1" cellspacing="0" cellpadding="10">
<tbody>
<tr>
<td style="padding: 3px; background-color: #ffffe5; font: bold 100% sans-serif; text-align: center;"><strong>SCO/WGS84 Property</strong></td>
<td style="padding: 3px; background-color: #ffffe5; font: bold 100% sans-serif; text-align: center;"><strong>Impact on the sWebMap component</strong></td>
</tr>
<tr>
<td style="padding: 3px;"><code>sco:polygonCoordinates</code></td>
<td style="padding: 3px;">Defines the coordinates of a polygon shape that represents a geographic area determined by a record.<a href="http://code.google.com/apis/kml/documentation/kmlreference.html#coordinates" rel="nofollow">Coordinates are defined as coordinates in KML</a>This property impacts the behavior of the sWebMap component in the sense that for a given <a title="StructXML" href="http://techwiki.openstructs.org/index.php/StructXML#.3Cresultset_.2F.3E">resultset</a> of records, polygon shapes are displayed on a World map for each of the records described with the property.</td>
</tr>
<tr>
<td style="padding: 3px;"><code>sco:polylineCoordinates</code></td>
<td style="padding: 3px;">Defines the coordinates of a polyline shape that represents a record on a map.<a href="http://code.google.com/apis/kml/documentation/kmlreference.html#coordinates" rel="nofollow">Coordinates are defined as coordinates in KML</a>This property impacts the behavior of the sWebMap component in the sense that for a given <a title="StructXML" href="http://techwiki.openstructs.org/index.php/StructXML#.3Cresultset_.2F.3E">resultset</a> of records, polylines are displayed on a World map for each of the records described with the property.</td>
</tr>
<tr>
<td style="padding: 3px;"><code>sco:mapMarkerImageUrl</code></td>
<td style="padding: 3px;">URL of an icon image to use as a marker on a web map. Normally, this property is used to annotate a Class description. All of the records belonging to that class are marked on a map using this icon image.This property impacts the behavior of the sWebMap component in the sense for a given <a title="StructXML" href="http://techwiki.openstructs.org/index.php/StructXML#.3Cresultset_.2F.3E">resultset</a> of records, and a given ontology description, all records of a given type of class that are displayed with the marker icon found at the URL specified for <code>sco:mapMarkerImageUrl</code>.</td>
</tr>
<tr>
<td style="padding: 3px;"><code>wgs84:lat</code></td>
<td style="padding: 3px;">Latitude coordinate of a record on a World map.This property impacts the behavior of the sWebMap component in the sense for a given <a title="StructXML" href="http://techwiki.openstructs.org/index.php/StructXML#.3Cresultset_.2F.3E">resultset</a> of records, each record with a wgs84:lat property is displayed on the sWebMap at that latitude coordinate.</td>
</tr>
<tr>
<td style="padding: 3px;"><code>wgs84:long</code></td>
<td style="padding: 3px;">Longitude coordinate of a record on a World map.This property impacts the behavior of the sWebMap component in the sense for a given <a title="StructXML" href="http://techwiki.openstructs.org/index.php/StructXML#.3Cresultset_.2F.3E">resultset</a> of records, each record with a wgs84:long property is displayed on the sWebMap at that longitude coordinate.</td>
</tr>
<tr>
<td style="padding: 3px;"><code>wgs84:alt</code></td>
<td style="padding: 3px;">Altitude of a record on a World map.This property impacts the behavior of the sWebMap component in the sense for a given <a title="StructXML" href="http://techwiki.openstructs.org/index.php/StructXML#.3Cresultset_.2F.3E">resultset</a> of records, each record with a wgs84:alt property is displayed on the sWebMap at that altitude indicator.</td>
</tr>
</tbody>
</table>
</div>
<h3>sStory Component</h3>
<p>The <a title="SStory" href="http://techwiki.openstructs.org/index.php/SStory">sStory </a> component has different behaviors depending on how its input record is described. Here is the list of SCO properties that impact an sStory component:</p>
<div align="center">
<table border="1" cellspacing="0" cellpadding="10">
<tbody>
<tr>
<td style="padding: 3px; background-color: #ffffe5; font: bold 100% sans-serif; text-align: center;"><strong>SCO Property</strong></td>
<td style="padding: 3px; background-color: #ffffe5; font: bold 100% sans-serif; text-align: center;"><strong>Impact on the sStory component</strong></td>
</tr>
<tr>
<td style="padding: 3px;"><code>sco:storyUrl</code></td>
<td style="padding: 3px;">URL reference to a webpage representation of the story that got indexed into <a title="Scones" href="http://techwiki.openstructs.org/index.php/Scones">Scones</a>.This property impacts the behavior of the sStory component in the sense that for a given record&#8217;s description, the sStory component refers users to the original webpage URL that got processed by Scones and is displayed in the sStory component.</td>
</tr>
<tr>
<td style="padding: 3px;"><code>sco:storyTextUri</code></td>
<td style="padding: 3px;">URI reference to the text of a storyThis property impacts the behavior of the sStory component in the sense that for a given record&#8217;s description, the sStory component uses the text document referenced by this property to display in the text display of the sStory component.</td>
</tr>
<tr>
<td style="padding: 3px;"><code>sco:storyAnnotatedTextUri</code></td>
<td style="padding: 3px;">URI reference to the annotated text of a story. Annotations are serialized in XML given the <a title="GATE" href="http://techwiki.openstructs.org/index.php/GATE">GATE</a>format.This property impacts the behavior of the sStory component in the sense that for a given record&#8217;s description, the sStory component usesw the Gate annotated text document referenced by this property to display the tagged concepts in the tags section of the sStory viewer, and also uses it to highlight the tagged terms within the text viewer.</td>
</tr>
</tbody>
</table>
</div>
<h3>sBarChart and sLinearChart Components</h3>
<p>The <a title="SBarChart" href="http://techwiki.openstructs.org/index.php/SBarChart">sBarChart</a> and the <a title="SLinearChart" href="http://techwiki.openstructs.org/index.php/SLinearChart">sLinearChart</a> components exhibit different behaviors depending on how the input records that are enabled for these component types are described. Here is the list of the SCO properties that impact this behavior:</p>
<div align="center">
<table border="1" cellspacing="0" cellpadding="10">
<tbody>
<tr>
<td style="padding: 3px; background-color: #ffffe5; font: bold 100% sans-serif; text-align: center;"><strong>SCO Property</strong></td>
<td style="padding: 3px; background-color: #ffffe5; font: bold 100% sans-serif; text-align: center;"><strong>Impact on the sBarChart and the sLinearChart components</strong></td>
</tr>
<tr>
<td style="padding: 3px;"><code>sco:comparableWith</code></td>
<td style="padding: 3px;">Is is possible to specify a &#8220;comparableWith&#8221; relation between two predicates. These comparable attributes have the same allowedValue(s), and the semantics of the predicates that are deemed comparable are the same. Since the kinds of values, and their semantics, are the same, they are then considered comparable.This property is normally applied when it is desirable, for example, to plot values of different attributes describing similar records on some visualization component (for example, a linear chart).This property impacts the behavior of the sLinearChart component in the sense that for a given record&#8217;s description, and a given ontology, the sLinearChart component will display the values of the comparable attributes on the a linear chart.</td>
</tr>
<tr>
<td style="padding: 3px;"><code>sco:unitType</code></td>
<td style="padding: 3px;">URI reference to a unit type ontology. The <code>sco:unitType</code> property is used to determine the type of unit referenced by a property. For example, if a data property has <code>xsd:float</code> as range, then <code>sco:unitType</code>determines what kind of things referred to by this number.The semantic components make all of the properties that share the same <code>sco:unitType</code>comparable (so, possibly displayable on the same semantic component, such as the sBarChart and the sLinearChart).This property impacts the behavior of the sLinarChart and the sBarChart component in the sense that for a given record&#8217;s description, and a given ontology, the sLinarChart or the sBarChart can be selected and used to display the values with the same unit type on one of these charts.</td>
</tr>
<tr>
<td style="padding: 3px;"><code>sco:orderingValue</code></td>
<td style="padding: 3px;">The value of the <code>sco:orderingValue</code> predicate is used to order the predicate of a set of comparable predicates. This set of comparable predicates is normally created from the set composed of all <code>compatibleWith</code>predicates. This is normally used to plot, and order, values of different attributes describing similar records on some visualization component (for example, a linear chart).This property impacts the behavior of the sLinarChart and the sBarChart component in the sense that for a given record&#8217;s description, and a given ontology, the sLinarChart or the sBarChart will order the values of comparable properties on the charts, according to the ordering value defined for each property.</td>
</tr>
</tbody>
</table>
</div>
<h3>sRelationBrowser</h3>
<p>The <a title="SRelationBrowser" href="http://techwiki.openstructs.org/index.php/SRelationBrowser">sRelationBrowser</a> component exhibits different behaviors depending on how its input record is described. Here is the list of SCO properties that impact the sRelationBrowser component:</p>
<div align="center">
<table border="1" cellspacing="0" cellpadding="10">
<tbody>
<tr>
<td style="padding: 3px; background-color: #ffffe5; font: bold 100% sans-serif; text-align: center;"><strong>SCO Property</strong></td>
<td style="padding: 3px; background-color: #ffffe5; font: bold 100% sans-serif; text-align: center;"><strong>Impact on the sRelationBrowser component</strong></td>
</tr>
<tr>
<td style="padding: 3px;"><code>sco:relationBrowserNodeType</code></td>
<td style="padding: 3px;">Reference to a relation browser node type used to skin a node according to its type. This should be a reference to a type URI defined in a relation browse nodes skins configuration file. If a record is defined with this property, the relation browser tries to find a node of that type to apply to it as a skin.This property impacts the behavior of the sRelationBrowser component in the sense that for a given record&#8217;s description, and a given ontology, the sRelationBrowser component uses the skin specified by the <code>sco:relationBrowserNodeType</code> attribute to display the record in the sRelationBrowser component.</td>
</tr>
</tbody>
</table>
</div>
<h3>sDashboard</h3>
<p>The <a title="SDashboard (page does not exist)" href="http://techwiki.openstructs.org/index.php?title=SDashboard&amp;action=edit&amp;redlink=1">sDashboard</a> component exhibits different behaviors depending on how its input record is described. Here is the list of SCO properties that impact the sDashboard component:</p>
<div align="center">
<table border="1" cellspacing="0" cellpadding="10">
<tbody>
<tr>
<td style="padding: 3px; background-color: #ffffe5; font: bold 100% sans-serif; text-align: center;"><strong>SCO Property</strong></td>
<td style="padding: 3px; background-color: #ffffe5; font: bold 100% sans-serif; text-align: center;"><strong>Impact on the sDashboard component</strong></td>
</tr>
<tr>
<td style="padding: 3px;"><code>sco:dashboardSessionFileUri</code></td>
<td style="padding: 3px;">URI reference to the Dashboard session accessible on the Web.This property impacts the behavior of the sRelationBrowser component in the sense that for a given record&#8217;s description, and a given ontology, the sDashboard component loads the Dashboard session referenced by this property.</td>
</tr>
</tbody>
</table>
</div>
<h2>Guide Visualization Template Selection</h2>
<p>One of the core features of the conStruct set of Drupal modules is the ability to use different display templates depending on the types of records available. The selection of these templates is based on the types of those records and the type hierarchies described by the OSF ontologies. This section describes how these ontologies guide template selections.</p>
<p>As a refresher on templates and their use, see the <a title="Building conStruct Templates" href="http://techwiki.openstructs.org/index.php/Building_conStruct_Templates">Building conStruct Templates</a> document. It describes how the templating engine works and how to create various templates.</p>
<h3>Template Selection</h3>
<p>Template selection is the action of binding an instance record to a display template based on its <em>type</em>. Three things are required to make this happen:</p>
<ol>
<li>Instance records have to be typed</li>
<li>An ontological structure of type relationships (via <code>subClasses</code>) has to exist in one or more OSF ontology(ies), and</li>
<li>A template has to exist for the type of the instance record.</li>
</ol>
<p>(<strong>Note:</strong> a specific template by type is not strictly required, since lacking a specific template for the target type, the system will invoke the nearest template up the parental chain in the governing ontology structure, eventually getting to the most generic template available, that for &#8220;thing&#8221;.)</p>
<h3>Impact of Ontologies on Template Selection</h3>
<p>conStruct&#8217;s templating engine selects record display templates based on the class hierarchy loaded on a OSF instance. It also uses inference on types to select the proper template for a given record.</p>
<p>Let&#8217;s say that we try to display information about a <code>foaf:Person</code> instance record. What the system attempts to do is to find a template that displays information about this kind of instance record. First, the <code>foaf:Person</code> type (class) has to be defined in the ontological structure of the OSF instance; if it is not, then no specific template will be selected and the system will default to using the <code>owl_thing.html</code> template (see below). If the type (class) is found, the system will next check to see if a template exists for that specific type. If one exists one, it will use the matching template. If one does not, it will next select the parent class of the type and try the match again. If it again fails, it will continue its test up the parental chain. If all tests fail, it will use the default <code>owl_thing.html</code> template. Whichever template is selected then becomes the basis for formatting and presenting the visual record display.</p>
<p>We can use a simple class hierarchy, matched to a simple set of available template files, to illustrate how ontologies impact the conStruct templating system.</p>
<div>
<table width="100%" border="1" cellspacing="0" cellpadding="10">
<tbody>
<tr>
<td style="padding: 3px; background-color: #ffffe5; font: bold 100% sans-serif; text-align: center;"><strong>Loaded Class Hierarchy</strong></td>
<td style="padding: 3px; background-color: #ffffe5; font: bold 100% sans-serif; text-align: center;"><strong>Available template files</strong></td>
</tr>
<tr>
<td style="padding: 3px;">
<pre>owl:Thing
   |
   |
    --&gt; foaf:Agent
            |
            |
            |--&gt; foaf:Person
            |
            |
             --&gt; foaf:Organization</pre>
</td>
<td style="padding: 3px;">
<pre>  owl_thing.tpl
  foaf_agent.tpl
  foaf_organization.tpl</pre>
</td>
</tr>
</tbody>
</table>
</div>
<p>Now, let&#8217;s say that our OSF portal is about to display information about a <code>foaf:Person</code> record. As we can notice, there is no <code>foaf_person.tpl</code> template available for a <code>foaf:Person</code>. However, because of the ontology structure, the system next attempts to select a template from a <em>parent</em> class of that <code>foaf:Person</code>.</p>
<p>What the system would do is to check if there is a template available for a record of type <code>foaf:Person</code>. Since there is none, it would try to find one for a parent type, so in this case the <code>foaf:Agent</code> class. In our example, there is now a match. The templating engine thus uses the <code>foaf_agent.tpl</code> template to display information about the <code>foaf:Person</code> record.</p>
<p>Were the <code>foaf_agent.tpl</code> not to exist, then the templating engine would fall back to the <code>owl_thing.tpl</code> template, which is considered to be the &#8220;generic record display template&#8221;, or the template of last resort.</p>
<p>This design means that if:</p>
<ol>
<li>the ontological structure changes over time, or</li>
<li>new templates get added to the system</li>
</ol>
<p>then there may be an impact on how the record gets displayed.</p>
<p>The major advantage of this design is that more and more specific formatting templates may be added to an OSF installation over time, both improving the tailored look of results displays and accommodating more structure and relationships as they evolve.</p>
<h2>Provide Reasoning and Inference</h2>
<p>A standard use of ontologies is for reasoning and inference, and those used by OSF are no exception.</p>
<p>By extension, however, we can also use these same capabilities to check on data consistency and coherence. This is an important feature of the system since the system can detect if there are logical inconsistencies or logical incoherencies that have been developed by the system administrator during ontology growth and development. Having coherent and consistent ontologies means that we have the proper foundations to create consistent and coherent datasets of instance records.</p>
<p>See further the discussion on <a title="Inferencing with ProtÃ©gÃ©" href="http://techwiki.openstructs.org/index.php/Inferencing_with_Prot%C3%A9g%C3%A9">reasoning using ProtÃ©gÃ©</a>.</p>
<h2>Guide Content Filtering</h2>
<p>Filtering data is the action of getting a subset of records from a complete dataset based on some selection criteria. In OSF, the predominant share of filtering is done using the structWSF <a title="Search" href="http://techwiki.openstructs.org/index.php/Search">Search</a> Web service endpoint. The a minority of filtering is done using the <a title="SPARQL" href="http://techwiki.openstructs.org/index.php/SPARQL">SPARQL</a> endpoint. It is also possible to filter via the AGGR aggregation ontology.</p>
<p>Possible filtering criteria for the Search endpoint are:</p>
<ol>
<li>Filtering by type(s)</li>
<li>Filtering by attribute(s)</li>
<li>Filtering by attribute(s)/value(s)</li>
<li>Filtering by geo-localization (within a given geographical area)</li>
</ol>
<p>These filtering activities are performed by different tools of the stack, such as:</p>
<ul>
<li>structSearch</li>
<li>structBrowse</li>
<li>sWebMap</li>
</ul>
<p>These tools are impacted by the definition of the loaded ontologies. The filtering of the values by types, attributes and attributes/values requires an ontology class or an ontology property as filtering criteria.</p>
<h3>Filtering with Inference</h3>
<p>Also, the <em>any</em> <a title="Search" href="http://techwiki.openstructs.org/index.php/Search">Search</a> query can be performed with <code>inference</code> enabled. Just like with the template selection section noted above, inference can have a big impact on the number and nature of returned results. Let&#8217;s consider this example class structure:</p>
<div>
<table width="100%" border="1" cellspacing="0" cellpadding="10">
<tbody>
<tr>
<td style="padding: 3px; background-color: #ffffe5; font: bold 100% sans-serif; text-align: center;"><strong>Loaded Class Hierarchy</strong></td>
<td style="padding: 3px; background-color: #ffffe5; font: bold 100% sans-serif; text-align: center;"><strong>Indexer Records</strong></td>
</tr>
<tr>
<td style="padding: 3px;">
<pre>owl:Thing
   |
   |
    --&gt; bibo:Document
            |
            |
            |
             --&gt; bibo:Image
                     |
                     |
                     |--&gt; muni:HeritageImage
                     |        |
                     |        |
                     |         --&gt; muni:ParkHeritageImage
                     |
                     |
                     |--&gt; muni:NeighborhoodImage
                     |
                     |
                     |
                      --&gt; muni:ParkImage</pre>
</td>
<td style="padding: 3px;">
<pre>  &lt;1&gt; a bibo:Image .
  &lt;2&gt; a muni:HeritageImage .
  &lt;3&gt; a muni:HeritageImage .
  &lt;4&gt; a muni:ParkHeritageImage .
  &lt;5&gt; a muni:ParlImage .</pre>
</td>
</tr>
</tbody>
</table>
</div>
<p>This class structure shows a hierarchy of images where the leaf classes are topical image classes (so classes where their individuals are considered images representing one of the topic: Heritage, Neighborhood and Park). Now let&#8217;s see how this class structure impacts Search queries, and returned results, by different tools (structSearch, structBrowse, sWebMap and others).</p>
<p>Here is a series of Search queries sent to a structWSF instance that has this class hierarchy loaded, using the sample specification noted above. This tables shows the results potentially returned by the Search endpoint with and without inferencing turned on:</p>
<div>
<table width="100%" border="1" cellspacing="0" cellpadding="10">
<tbody>
<tr>
<td style="padding: 3px; background-color: #ffffe5; font: bold 100% sans-serif; text-align: center;"><strong>Use Case</strong></td>
<td style="padding: 3px; background-color: #ffffe5; font: bold 100% sans-serif; text-align: center;"><strong>Type Filter</strong></td>
<td style="padding: 3px; background-color: #ffffe5; font: bold 100% sans-serif; text-align: center;"><strong>Inference</strong></td>
<td style="padding: 3px; background-color: #ffffe5; font: bold 100% sans-serif; text-align: center;"><strong>Returned Results</strong></td>
</tr>
<tr>
<td style="padding: 3px;">#1</td>
<td style="padding: 3px;"><code>muni:HeritageImage</code></td>
<td style="padding: 3px;">Off</td>
<td style="padding: 3px;">
<pre>&lt;2&gt; a muni:HeritageImage .
&lt;3&gt; a muni:HeritageImage .</pre>
</td>
</tr>
<tr>
<td style="padding: 3px;">#2</td>
<td style="padding: 3px;"><code>muni:HeritageImage</code></td>
<td style="padding: 3px;">On</td>
<td style="padding: 3px;">
<pre>&lt;2&gt; a muni:HeritageImage .
&lt;3&gt; a muni:HeritageImage .
&lt;4&gt; a muni:ParkHeritageImage .</pre>
</td>
</tr>
<tr>
<td style="padding: 3px;">#3</td>
<td style="padding: 3px;"><code>bibo:Image</code></td>
<td style="padding: 3px;">Off</td>
<td style="padding: 3px;"></td>
</tr>
<tr>
<td style="padding: 3px;">#4</td>
<td style="padding: 3px;"><code>bibo:Image</code></td>
<td style="padding: 3px;">On</td>
<td style="padding: 3px;">
<pre>&lt;1&gt; a bibo:Image .
&lt;2&gt; a muni:HeritageImage .
&lt;3&gt; a muni:HeritageImage .
&lt;4&gt; a muni:ParkHeritageImage .
&lt;5&gt; a muni:ParlImage .</pre>
</td>
</tr>
</tbody>
</table>
</div>
<p>In the Use Case #1, the user requests all of the <code>muni:HeritageImages</code> without inferencing. This means that the Search endpoint will return all of the records that have been typed as <code>muni:HeritageImage</code>. In this case, the records <code>&lt;2&gt; and &lt;3&gt;</code> got returned.</p>
<p>Use Case #2 is a variant of Use Case #1, only now with inferencing enabled. In this use case, the Search endpoint will return all the <code>muni:HeritageImage</code> and all the records that are typed with one of its subtypes (in this case, <code>muni:ParkHeritageImage</code>). For this query, records <code>&lt;2&gt;, &lt;3&gt; and &lt;4&gt;</code> got returned. This case shows where ontologies can have a dramatic impact on the system. If we modify that class hierarchy and put the <code>muni:ParkHeritageImage</code> as being a sub-class-of <code>bibo:Image</code>, then the same results would be returned for Use Case #2 than we got with Use Case #1.</p>
<p>With Use Case #3, the endpoint does not return any results because inferencing is disabled, and because there is no record typed as <code>bibo:Image</code>.</p>
<p>Use Case #4 is a variant of Use Case #3 where inferencing is enabled. The endpoint returns all the image records because all of them are <code>bibo:Image</code> by inference on type.</p>
<h3>Filtering via the AGGR Ontology</h3>
<p>The <a title="AGGR Ontology" href="http://techwiki.openstructs.org/index.php/AGGR_Ontology">AGGR Ontology</a> also has an impact on anything that displays facets of filtered searches. Amongst others, it impacts the structSearch and structBrowse <a title="ConStruct" href="http://techwiki.openstructs.org/index.php/ConStruct">conStruct</a> modules. It also impacts different user interfaces that use the Search Web service endpoint to perform auto-completion tasks.</p>
<h2>Tag Concepts in Text Documents</h2>
<p>In the <a title="Open Semantic Framework" href="http://techwiki.openstructs.org/index.php/Open_Semantic_Framework">Open Semantic Framework</a>, the <a title="Scones" href="http://techwiki.openstructs.org/index.php/Scones">Scones</a> Web service endpoint is what is used to analyze unstructured text documents, then turning them into semi-structured text documents by automatically tagging concepts. The concept tagging takes place using <a title="Ontology-based Information Extraction" href="http://techwiki.openstructs.org/index.php/Ontology-based_Information_Extraction">ontology-based information extraction</a>, or OBIE. Named entity dictionaries are the basis for entity tagging.</p>
<p>These concepts used for the tagging come from selected ontologies loaded on the system. The way these ontologies have been created, and the way the classes and named individuals have been defined, has a dramatic impact on the quality of the documents tagged by Scones.</p>
<p>Scones uses two things from ontologies:</p>
<ul>
<li>its classes</li>
<li>its named individuals</li>
</ul>
<p>Depending on settings, one or both of these sources may be used for scones tagging.</p>
<p>There are a few properties intimately related to the Scones Web service endpoint:</p>
<div align="center">
<table border="1" cellspacing="0" cellpadding="10">
<tbody>
<tr>
<td style="padding: 3px; background-color: #ffffe5; font: bold 100% sans-serif; text-align: center;"><strong>Properties</strong></td>
<td style="padding: 3px; background-color: #ffffe5; font: bold 100% sans-serif; text-align: center;"><strong>Impact on Scones</strong></td>
</tr>
<tr>
<td style="padding: 3px;">iron:prefLabel</td>
<td style="padding: 3px;">Preferred label to refer to an instance record.This property impacts the behavior of the Scones tagger in the sense that the value of the <code>iron:prefLabel</code> property is used to detect and tag as a reference the corresponding class or named individual.</td>
</tr>
<tr>
<td style="padding: 3px;">iron:altLabel</td>
<td style="padding: 3px;">Alternative label to refer to an instance record.This property impacts the behavior of the Scones tagger in the sense that the value(s) of the <code>iron:altLabel</code> property is used to detect and tag as a reference the corresponding class(es) or named individual(s).</td>
</tr>
<tr>
<td style="padding: 3px;">iron:hiddenLabel</td>
<td style="padding: 3px;">Hidden label are labels that are not displayed in any user interface, but may be used by different systems for indexing purposes (such as for recognizing misspellings).This property impacts the behavior of the Scones tagger in the sense that the value(s) of the <code>iron:hiddenLabel</code> property is used to detect and tag as a reference the corresponding class(es) or named individual(s). As we saw above, hidden labels are not displayed in user interfaces. However, they <em><strong>are</strong></em> used to specify variations in the way some of the other labels may be written. These hidden labels are explicitly used by the Scones tagger.</td>
</tr>
<tr>
<td style="padding: 3px;">sco:namedEntity</td>
<td style="padding: 3px;">Specifies if a resource can be considered a named entity. Literal value: &#8220;true&#8221; or &#8220;false&#8221;.This property impacts the behavior of the Scones tagger in the sense that all of the records with the <code>sco:namedEntity</code> property set to <code>true</code>are automatically added by the Scones endpoint to its Named Entities Dictionaries.This means that all the records that are specified to be named entities will be used by Scones to tag any input text documents.</td>
</tr>
</tbody>
</table>
</div>
<h2>Help Navigate and Organize Web Portals</h2>
<p>In OSF, ontologies also have an impact on the general organization of a Web portal and how it is navigated.</p>
<h3>Portal Navigation</h3>
<p>In an OSF portal, its domain ontologies use the <code>sRelationBrowser</code> for general navigation. The relation browser is a tool that lets users dynamically navigate a graph (that is, nodes with arcs that links these nodes). The most widespread usage of the relation browser is to let users navigate the links between ontology concepts. These concepts are the anchor points of what other content is available on the Web portal. By navigating the concepts (classes) structure, users are able to explore an OSF portal&#8217;s entire content.</p>
<p>Each node in the <code>sRelationBrowser</code> semantic component is linked to whatever other kinds of related records exist in the system. Depending on the types of those records, other semantic components can then be invoked to display this tightly related content for each node.</p>
<p>Ontologies thus impact navigation and discovery on an OSF portal in two ways:</p>
<ol>
<li>They impact the navigation of the structure by defining which concepts are linked to other concepts and with what property</li>
<li>They define what related records may get displayed to the user based on their classes and properties.</li>
</ol>
<h3>Layouts Organization</h3>
<p>OSF Web portals are mainly organized by <a title="Configuration Workflow" href="http://techwiki.openstructs.org/index.php/Configuration_Workflow#Layouts">Layouts</a>. A <a title="Layout Concept" href="http://techwiki.openstructs.org/index.php/Layout_Concept">layout</a> is a specific page presentation format with specific design, components and ordering and sizing of those components. This page presentation is highly influenced by the kind of things indexed in the system. Generally, layouts present records of a certain type (or family of types), along with specialized functions that users are able to use to perform different actions on that set of records.</p>
<p>Here are a few examples of such layouts:</p>
<ul>
<li><a title="Sample Chart Template" href="http://techwiki.openstructs.org/index.php/Sample_Chart_Template">Sample Chart Template</a></li>
<li><a title="Sample Image Template" href="http://techwiki.openstructs.org/index.php/Sample_Image_Template">Sample Image Template</a></li>
<li><a title="Sample Topic Template" href="http://techwiki.openstructs.org/index.php/Sample_Topic_Template">Sample Topic Template</a></li>
<li><a title="Sample WebMap Template" href="http://techwiki.openstructs.org/index.php/Sample_WebMap_Template">Sample WebMap Template</a></li>
</ul>
<p>These layouts aggregate all of the records of a certain type (like images of all kinds), display them using different kind of tools (like an Images Gallery), and filter them depending on different filtering criteria (like mapping the position where each image got captured, on a map, within a specific neighborhood area).</p>
<p>The ontologies impact the general organization of the Web portal because of the kind of things that are indexed in the system interacting with the available layouts.</p>
<h2>Manage Datasets and Ontologies</h2>
<p>Basic settings for managing datasets and ontologies is provided by the <a title="WSF Ontology" href="http://techwiki.openstructs.org/index.php/WSF_Ontology">WSF Ontology</a>. It presently does so via two mechanisms.</p>
<h4>Datasets Syncing Framework</h4>
<p>The <a title="Datasets Syncing Framework" href="http://techwiki.openstructs.org/index.php/Datasets_Syncing_Framework">Datasets Syncing Framework</a> behaves differently depending on the value of the <code>wsf:crudAction</code> property for each input record.</p>
<div align="center">
<table border="1" cellspacing="0" cellpadding="10">
<tbody>
<tr>
<td style="padding: 3px; background-color: #ffffe5; font: bold 100% sans-serif; text-align: center;"><strong>WSF Property</strong></td>
<td style="padding: 3px; background-color: #ffffe5; font: bold 100% sans-serif; text-align: center;"><strong>Impact on the DSF</strong></td>
</tr>
<tr>
<td style="padding: 3px;"><code>wsf:crudAction</code></td>
<td style="padding: 3px;">States the CRUD action that should be used to index a given record into structWSF. This property is used by the Datasets Syncing Framework to determine if the record feed to it should be created, deleted or updated.The value of this property can be one of:(1) create (2) update (3) deleteThis property impact the behavior of the DSF in the sense that it is the record&#8217;s description, using this property that will tells the framework how to behave (create, delete or update) toward the input record. If nothing is specified, the record will simply be ignored.</td>
</tr>
</tbody>
</table>
</div>
<h4>structOntology</h4>
<p>The <a title="StructOntology: Overview" href="http://techwiki.openstructs.org/index.php/StructOntology:_Overview">structOntology</a> conStruct module exhibits different behavior depending on the value of the <code>wsf:ontologyModified</code> property for each input ontology description.</p>
<div align="center">
<table border="1" cellspacing="0" cellpadding="10">
<tbody>
<tr>
<td style="padding: 3px; background-color: #ffffe5; font: bold 100% sans-serif; text-align: center;"><strong>WSF Property</strong></td>
<td style="padding: 3px; background-color: #ffffe5; font: bold 100% sans-serif; text-align: center;"><strong>Impact on the DSF</strong></td>
</tr>
<tr>
<td style="padding: 3px;"><code>wsf:ontologyModified</code></td>
<td style="padding: 3px;">States if an ontology has been modified since the last time it got saved on the file system of the OSF server instance.This property impacts the behavior of the structOntology module in the sense that if, for an input ontology, the description of that ontology states that this property is &#8220;true&#8221;, then it will notify the user via its loaded ontologies list that the ontology has been modified, and that it has not yet been saved.</td>
</tr>
</tbody>
</table>
</div>
<h2>Set Access Permissions and Registrations</h2>
<p>The <a title="WSF Ontology" href="http://techwiki.openstructs.org/index.php/WSF_Ontology">WSF Ontology</a> also has a principal purpose to describe the internal state of a structWSF instance such as the internal access control records, the datasets descriptions, the registered web service endpoints, etc. As a result, this ontology can have multiple effects on other parts of an OSF instance.</p>
<p>The WSF Ontology is used to describe three main areas of a <a title="StructWSF" href="http://techwiki.openstructs.org/index.php/StructWSF">structWSF</a> installation:</p>
<ol>
<li>datasets registry</li>
<li>access definition registry</li>
<li>registered web services endpoints registry</li>
</ol>
<p>These registries are hosted in some specialized datasets in the triple store (<a title="Virtuoso" href="http://techwiki.openstructs.org/index.php/Virtuoso">Virtuoso</a> for most OSF installations). The information indexed in these different registries is defined using the WSF ontology.</p>
<p>All structWSF Web services are affected by these registries.</p>
]]></content:encoded>
			<wfw:commentRss>http://fgiasson.com/blog/index.php/2011/12/05/role-and-use-of-ontologies-in-the-open-semantic-framework/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Moving Projects from Google Code to GitHub</title>
		<link>http://fgiasson.com/blog/index.php/2011/11/21/moving-projects-from-google-code-to-github/</link>
		<comments>http://fgiasson.com/blog/index.php/2011/11/21/moving-projects-from-google-code-to-github/#comments</comments>
		<pubDate>Mon, 21 Nov 2011 21:29:50 +0000</pubDate>
		<dc:creator>Frederick Giasson</dc:creator>
				<category><![CDATA[conStruct]]></category>
		<category><![CDATA[irON]]></category>
		<category><![CDATA[Open Semantic Framework]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Semantic Components]]></category>
		<category><![CDATA[structWSF]]></category>
		<category><![CDATA[#developer]]></category>
		<category><![CDATA[#git]]></category>
		<category><![CDATA[#github]]></category>
		<category><![CDATA[#google code]]></category>
		<category><![CDATA[#source control]]></category>
		<category><![CDATA[#svn]]></category>

		<guid isPermaLink="false">http://fgiasson.com/blog/?p=1677</guid>
		<description><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=Moving Projects from Google Code to GitHub&amp;rft.aulast=Giasson&amp;rft.aufirst=Frederick&amp;rft.subject=conStruct&amp;rft.subject=irON&amp;rft.subject=Open Semantic Framework&amp;rft.subject=Programming&amp;rft.subject=Semantic Components&amp;rft.subject=structWSF&amp;rft.source=Frederick Giasson&#8217;s Weblog&amp;rft.date=2011-11-21&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://fgiasson.com/blog/index.php/2011/11/21/moving-projects-from-google-code-to-github/&amp;rft.language=English"></span>
Last week we slowly migrated Structured Dynamics&#8216; Google Code Projects to GitHub.We have been thinking about moving to GitHub for some time now, but we only wanted to move projects to it if no prior history and commits were dropped in the process. One motivation for the possible change has been the seeming lack of [...]]]></description>
			<content:encoded><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=Moving Projects from Google Code to GitHub&amp;rft.aulast=Giasson&amp;rft.aufirst=Frederick&amp;rft.subject=conStruct&amp;rft.subject=irON&amp;rft.subject=Open Semantic Framework&amp;rft.subject=Programming&amp;rft.subject=Semantic Components&amp;rft.subject=structWSF&amp;rft.source=Frederick Giasson&#8217;s Weblog&amp;rft.date=2011-11-21&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://fgiasson.com/blog/index.php/2011/11/21/moving-projects-from-google-code-to-github/&amp;rft.language=English"></span>
<table>
<tbody>
<tr>
<td>Last week we slowly migrated <a title="Structured Dynamics LLC." href="http://structureddynamics.com">Structured Dynamics</a>&#8216; Google Code Projects to <a title="Structured Dynamics' Open Source Projects" href="https://github.com/structureddynamics">GitHub</a>.We have been thinking about moving to GitHub for some time now, but we only wanted to move projects to it if no prior history and commits were dropped in the process. One motivation for the possible change has been the seeming lack of support by Google for certain long-standing services: we are seeing disturbing trends across a number of existing services. We also needed a migration process that would work with all of our various projects, without losing a trunk, branch, tag or commits (and their related comments).</td>
<td><a href="https://github.com/structureddynamics"><img class="aligncenter size-medium wp-image-1713" src="http://fgiasson.com/blog/wp-content/uploads/2011/11/github-profile-200x300.png" alt="" width="120" height="180" /></a></td>
</tr>
</tbody>
</table>
<p>It was not until recently that I found a workable process. Other people have successfully migrated Google Code SVN projects to GitHub, but I had yet to find a consolidated guide to do it. It is for this last reason that I write this blog post: to help people, if they desire, to move projects from Google Code to GitHub.</p>
<h3>Moving from Google Code to GitHub</h3>
<p>The protocol outlined below may appear complex, but it looks more intimidating than it really is. Moving a project takes about two to five minutes once your GitHub account and your migration computer is properly configured.</p>
<p>You need four things to move a Google Code SVN project to GitHub:</p>
<ol>
<li>A Google Code project to move</li>
<li>A GitHub user account</li>
<li>SSH keys, and</li>
<li>A <em>migration computer</em> that is configured to migrate the project from Google Code to GitHub. (in this tutorial, we will use a Ubuntu server; but any other Linux/Windows/Mac computer, properly configured, should do the job)</li>
</ol>
<h3>Create GitHub Account</h3>
<p>If you don&#8217;t already own a GitHub account, the first step is to <a title="Create GitHub Account" href="https://github.com/signup/free">create one here</a>.</p>
<h3>Create &amp; Configure SSH Keys</h3>
<p>Once your account has been created, you have to create and setup the SSH keys that you will use to commit the code into the Git Repository on GitHub:</p>
<ol>
<li>Go to the <a title="GitHub SSH Keys Registration Page" href="https://github.com/account/ssh">SSH Keys Registration page of your account</a></li>
<li>If you already have a key, then add it to this page, <a title="How to create SSH keys on Windows for GitHub" href="http://help.github.com/win-set-up-git/">otherwise read this manual to learn how to generate one</a></li>
</ol>
<h3>Configure Migration Server</h3>
<p>The next step is to configure the computer that will be used to migrate the project. For this tutorial, I use a <em>Ubuntu server</em> to do the migration, but any Windows, Linux or Mac computer should do the job if properly configured.</p>
<p>The first step is to install Git and Ruby on that computer:</p>
<div style="overflow:hidden;; " class="alignnone">
<div class="shadow_curl" style="margin:0 !important; max-width:100% !important;"><div class="codecolorer-container bash railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp;<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get install</span> git-core <span style="color: #c20cb9; font-weight: bold;">git-svn</span> ruby rubygems</div></td></tr></tbody></table></div>
<img src="http://fgiasson.com/blog/wp-content/plugins/shadows/shadow_curl.png" class="aligncenter shadow_img" style="margin:0 !important;height:10px;width:100%;"></div>
</div>
<p>To perform the migration of a Google Code SVN project to GitHub, we are using a Ruby application called <code><a href="https://github.com/nirvdrum/svn2git">svn2git</a></code> that is now developed by <a href="https://github.com/nirvdrum">Kevin Menard</a>. The next step is to install <code>svn2git</code> on that computer:</p>
<div style="overflow:hidden;; " class="alignnone">
<div class="shadow_curl" style="margin:0 !important; max-width:100% !important;"><div class="codecolorer-container bash railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp;<span style="color: #c20cb9; font-weight: bold;">sudo</span> gem <span style="color: #c20cb9; font-weight: bold;">install</span> svn2git --source http:<span style="color: #000000; font-weight: bold;">//</span>gemcutter.org</div></td></tr></tbody></table></div>
<img src="http://fgiasson.com/blog/wp-content/plugins/shadows/shadow_curl.png" class="aligncenter shadow_img" style="margin:0 !important;height:10px;width:100%;"></div>
</div>
<h3>Migrate Project</h3>
<p>Before migrating your project, you have to link the Google Code committers to GitHub accounts. This is done by populating a simple text file that will be given as input to <code>svn2git</code>.</p>
<p>Open the <code>authors.txt</code> file into a temporary folder:</p>
<div style="overflow:hidden;; " class="alignnone">
<div class="shadow_curl" style="margin:0 !important; max-width:100% !important;"><div class="codecolorer-container bash railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp;<span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">vim</span> <span style="color: #000000; font-weight: bold;">/</span>tmp<span style="color: #000000; font-weight: bold;">/</span>authors.txt</div></td></tr></tbody></table></div>
<img src="http://fgiasson.com/blog/wp-content/plugins/shadows/shadow_curl.png" class="aligncenter shadow_img" style="margin:0 !important;height:10px;width:100%;"></div>
</div>
<p>Then, for each author, you have to add the mapping between their Google Code and GitHub accounts. If a Google Code committer does not exist on GitHub, then you should map it to your own GitHub account.</p>
<div style="overflow:hidden;; " class="alignnone">
<div class="shadow_curl" style="margin:0 !important; max-width:100% !important;"><div class="codecolorer-container text railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp;(no author) = Frederick Giasson &lt;fred@f...com&gt;<br />
&nbsp;fred@f...com = Frederick Giasson &lt;fred@f...com&gt;</div></td></tr></tbody></table></div>
<img src="http://fgiasson.com/blog/wp-content/plugins/shadows/shadow_curl.png" class="aligncenter shadow_img" style="margin:0 !important;height:10px;width:100%;"></div>
</div>
<p>The format of this <code>authors.txt</code> file is:</p>
<div style="overflow:hidden;; " class="alignnone">
<div class="shadow_curl" style="margin:0 !important; max-width:100% !important;"><div class="codecolorer-container text railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp;Google-Account-Username = Name-Of-Author-On-GitHub &lt;Email-Of-Author-On-Github</div></td></tr></tbody></table></div>
<img src="http://fgiasson.com/blog/wp-content/plugins/shadows/shadow_curl.png" class="aligncenter shadow_img" style="margin:0 !important;height:10px;width:100%;"></div>
</div>
<p>Take note of the first Google Code committer <code>(no author)</code> mapping. This link is required for every <code>authors.txt</code> file. This placeholder is used to map the initial commit performed by the Google Code system. (When Google Code initializes a new project, it uses that username for creating the first commit of any project.)</p>
<p>When you are done, save the file.</p>
<p>Now that set up is complete, you are ready to migrate your project. First, let&#8217;s create the folder that will be used to checkout the SVN project on the server, and then to push it on GitHub.</p>
<div style="overflow:hidden;; " class="alignnone">
<div class="shadow_curl" style="margin:0 !important; max-width:100% !important;"><div class="codecolorer-container bash railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>tmp<span style="color: #000000; font-weight: bold;">/</span><br />
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> myproject<br />
<span style="color: #7a0874; font-weight: bold;">cd</span> myproject</div></td></tr></tbody></table></div>
<img src="http://fgiasson.com/blog/wp-content/plugins/shadows/shadow_curl.png" class="aligncenter shadow_img" style="margin:0 !important;height:10px;width:100%;"></div>
</div>
<p>In this tutorial, we have a normal migration scenario. However, your migration scenario may differ from this one. It is why I would suggest you check out the <a href="https://github.com/nirvdrum/svn2git">different scenarios that are supported by <code>svn2git</code> document</a>. Change the following command accordingly. Let&#8217;s migrate the Google Code SVN Project into the local Git repository:</p>
<div style="overflow:hidden;; " class="alignnone">
<div class="shadow_curl" style="margin:0 !important; max-width:100% !important;"><div class="codecolorer-container bash railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp;<span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>gems<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">1.8</span><span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>svn2git http:<span style="color: #000000; font-weight: bold;">//</span>myproject.googlecode.com<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">svn</span> <span style="color: #660033;">--authors</span> <span style="color: #000000; font-weight: bold;">/</span>tmp<span style="color: #000000; font-weight: bold;">/</span>authors.txt</div></td></tr></tbody></table></div>
<img src="http://fgiasson.com/blog/wp-content/plugins/shadows/shadow_curl.png" class="aligncenter shadow_img" style="margin:0 !important;height:10px;width:100%;"></div>
</div>
<p>Make sure that no errors have been reported during the process. If it is the case, then refer to the <code>Possible Errors and Fixes</code> section below to troubleshoot your issue.</p>
<p>The next step is to create a new GitHub repository where to migrate the SVN project. <a title="Create a new GitHub repository" href="https://github.com/repositories/new">Go to this GitHub page to create your new repository</a>. Then you have to configure Git to add a remote link, from the local Git repository you created on your migration computer, to this remote GitHub repository:</p>
<div style="overflow:hidden;; " class="alignnone">
<div class="shadow_curl" style="margin:0 !important; max-width:100% !important;"><div class="codecolorer-container bash railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp;<span style="color: #c20cb9; font-weight: bold;">git remote</span> add origin <span style="color: #c20cb9; font-weight: bold;">git</span><span style="color: #000000; font-weight: bold;">@</span>github.com:you-github-username<span style="color: #000000; font-weight: bold;">/</span>myproject.git</div></td></tr></tbody></table></div>
<img src="http://fgiasson.com/blog/wp-content/plugins/shadows/shadow_curl.png" class="aligncenter shadow_img" style="margin:0 !important;height:10px;width:100%;"></div>
</div>
<p>Finally, let&#8217;s push the local Git repository master, branches and tags to GitHub. The first thing to push onto GitHub is the SVN&#8217;s trunk. It is done by running that command:</p>
<div style="overflow:hidden;; " class="alignnone">
<div class="shadow_curl" style="margin:0 !important; max-width:100% !important;"><div class="codecolorer-container bash railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp;<span style="color: #c20cb9; font-weight: bold;">git push</span> <span style="color: #660033;">-u</span> origin master</div></td></tr></tbody></table></div>
<img src="http://fgiasson.com/blog/wp-content/plugins/shadows/shadow_curl.png" class="aligncenter shadow_img" style="margin:0 !important;height:10px;width:100%;"></div>
</div>
<p>Then, if your project has multiple branches and tags, you can push them, one by one, using the same command. However, you will have to replace <code>master</code> by the name of that branch or tag. If you don&#8217;t know what is the exact name of these branches or tags, you can easily list all of them using this Git command:</p>
<div style="overflow:hidden;; " class="alignnone">
<div class="shadow_curl" style="margin:0 !important; max-width:100% !important;"><div class="codecolorer-container bash railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp;<span style="color: #c20cb9; font-weight: bold;">git show-ref</span></div></td></tr></tbody></table></div>
<img src="http://fgiasson.com/blog/wp-content/plugins/shadows/shadow_curl.png" class="aligncenter shadow_img" style="margin:0 !important;height:10px;width:100%;"></div>
</div>
<p>Once you have progressed through all branched and tags, you are done. If you take a look at your GitHub project&#8217;s page, you should see that the trunk, branches, tags and commits are now properly imported into that project.</p>
<h3>Possible Errors And Fixes</h3>
<h4>Fatal Error: Not a valid object name</h4>
<p>There are a few things that can go wrong while trying to migrate your project(s).</p>
<p>One of the errors I experienced is a <code>"fatal"</code> error message <code>"Not a valid object name"</code>. <a href="https://github.com/nirvdrum/svn2git/issues/26">To fix this</a>, we have to fix a line of code in <code>svn2git</code>. Open the <code>migration.rb</code> file. Check around the <code>line 227</code> for the method <code>fix_branches()</code>. Remove the first line of that method, and replace the second one by:</p>
<div style="overflow:hidden;; " class="alignnone">
<div class="shadow_curl" style="margin:0 !important; max-width:100% !important;"><div class="codecolorer-container ruby railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp;svn_branches = <span style="color:#0066ff; font-weight:bold;">@remote</span>.<span style="color:#9900CC;">find_all</span> <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#006600; font-weight:bold;">|</span>b<span style="color:#006600; font-weight:bold;">|</span> !@tags.<span style="color:#9966CC; font-weight:bold;">include</span>?<span style="color:#006600; font-weight:bold;">&#40;</span>b<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&amp;&amp;</span> b.<span style="color:#9900CC;">strip</span> =~ <span style="color:#006600; font-weight:bold;">%</span>r<span style="color:#006600; font-weight:bold;">&#123;</span>^svn\<span style="color:#006600; font-weight:bold;">/</span><span style="color:#006600; font-weight:bold;">&#125;</span> <span style="color:#006600; font-weight:bold;">&#125;</span></div></td></tr></tbody></table></div>
<img src="http://fgiasson.com/blog/wp-content/plugins/shadows/shadow_curl.png" class="aligncenter shadow_img" style="margin:0 !important;height:10px;width:100%;"></div>
</div>
<h4>Error: author not existing</h4>
<p>While running the <code>svn2git</code> application, the process may finish prematurely. If you check the output, you may see that it can&#8217;t find the match for an author. What you will have to do is to add that author to your authors file and re-run <code>svn2git</code>. Otherwise you won&#8217;t be able to fully migrate the project.</p>
<p>I&#8217;m not quite sure why these minor glitches occurred during my initial migrate, but with the simple fixes above you should be good to go.</p>
]]></content:encoded>
			<wfw:commentRss>http://fgiasson.com/blog/index.php/2011/11/21/moving-projects-from-google-code-to-github/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting Data Out of MyPeg.ca using structWSF Endpoints</title>
		<link>http://fgiasson.com/blog/index.php/2010/11/29/getting-data-out-of-mypeg-ca-using-structwsf-endpoints/</link>
		<comments>http://fgiasson.com/blog/index.php/2010/11/29/getting-data-out-of-mypeg-ca-using-structwsf-endpoints/#comments</comments>
		<pubDate>Mon, 29 Nov 2010 18:06:36 +0000</pubDate>
		<dc:creator>Frederick Giasson</dc:creator>
				<category><![CDATA[conStruct]]></category>
		<category><![CDATA[irON]]></category>
		<category><![CDATA[Semantic Components]]></category>
		<category><![CDATA[Semantic Web]]></category>
		<category><![CDATA[Structured Dynamics]]></category>
		<category><![CDATA[structWSF]]></category>
		<category><![CDATA[#mypeg]]></category>
		<category><![CDATA[#structwsf]]></category>
		<category><![CDATA[#web services]]></category>

		<guid isPermaLink="false">http://fgiasson.com/blog/?p=1170</guid>
		<description><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=Getting Data Out of MyPeg.ca using structWSF Endpoints&amp;rft.aulast=Giasson&amp;rft.aufirst=Frederick&amp;rft.subject=conStruct&amp;rft.subject=irON&amp;rft.subject=Semantic Components&amp;rft.subject=Semantic Web&amp;rft.subject=Structured Dynamics&amp;rft.subject=structWSF&amp;rft.source=Frederick Giasson&#8217;s Weblog&amp;rft.date=2010-11-29&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://fgiasson.com/blog/index.php/2010/11/29/getting-data-out-of-mypeg-ca-using-structwsf-endpoints/&amp;rft.language=English"></span>
A few weeks ago I presented the new MyPeg.ca community indicators web portal for Winnipeg's citizens. I explained how in MyPeg.ca we leverage Structured Dynamics' semantic technologies stack (akaThe Semantic Muffin). Today's blog post explains one facet of the project that shows how external agents (people, services, software, etc.) can interact with the system's indicator [...]]]></description>
			<content:encoded><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=Getting Data Out of MyPeg.ca using structWSF Endpoints&amp;rft.aulast=Giasson&amp;rft.aufirst=Frederick&amp;rft.subject=conStruct&amp;rft.subject=irON&amp;rft.subject=Semantic Components&amp;rft.subject=Semantic Web&amp;rft.subject=Structured Dynamics&amp;rft.subject=structWSF&amp;rft.source=Frederick Giasson&#8217;s Weblog&amp;rft.date=2010-11-29&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://fgiasson.com/blog/index.php/2010/11/29/getting-data-out-of-mypeg-ca-using-structwsf-endpoints/&amp;rft.language=English"></span>
<table>
<tbody>
<tr>
<td>A few weeks ago I presented the new <a href="../../../../../index.php/2010/11/08/mypeg-ca-a-community-indicators-web-portal-using-semantic-web-technologies/">MyPeg.ca community indicators web portal for Winnipeg's citizens</a>. I explained how in <a href="http://www.mypeg.ca/">MyPeg.ca</a> we leverage <a href="http://structureddynamics.com/">Structured Dynamics</a>' semantic technologies stack (<em>aka</em>The Semantic Muffin). Today's blog post explains one facet of the project that shows how external agents (people, services, software, etc.) can interact with the system's indicator datasets using the structWSF web service endpoints.Since this post focuses only on data export, I suggest you read the <a href="http://techwiki.openstructs.org/index.php/StructWSF_Web_Services_Tutorial">structWSF Web Services Tutorial</a> for a complete overview of how the endpoints architecture works.</td>
<td valign="top">
<p style="text-align: center;"><a href="http://fgiasson.com/blog/wp-content/uploads/2010/11/old-factory.jpg"><img class="size-medium wp-image-1186  aligncenter" title="old-factory" src="http://fgiasson.com/blog/wp-content/uploads/2010/11/old-factory-199x300.jpg" alt="Merging Pipes" width="199" height="300" /></a></p>
</td>
</tr>
</tbody>
</table>
<h3>Two Main structWSF Characteristics: Accessibility &amp; Management</h3>
<p><a href="http://openstructs.org/structwsf">structWSF</a> is a set of 22 web service endpoints that lets you integrate data from different sources, manage that integrated data, and publish it via different communication channels such as web pages, software applications, etc.</p>
<p>Obviously, the main characteristic of this framework is that everything is a web service. This means that all functionality of the system can be accessed from anywhere on the Internet. However, this doesn't mean that everything is open like a snack-bar. In fact, there are two levels of accessibility: (1) access to the web service endpoint's URL, and (2) access to the content of datasets hosted on structWSF. Depending on the usecase, people could restrict the direct access to the web service endpoint(s) by properly configuring their web server, others could choose to let anyone access the endpoints, but would restrict the access to the dataset(s) hosted by structWSF. In case of MyPeg.ca, the sponsor chose to open the access to their web service endpoints and datasets.</p>
<p>Just by surfing on the MyPeg.ca portal, you are already leveraging these endpoints in multiple different ways. First, each time you generate a <a href="http://www.mypeg.ca/conStruct/browse/">browse</a> or a <a href="http://www.mypeg.ca/conStruct/search/?query=poverty">search</a> Web page, you are telling the web server to send multiple queries to different endpoints; then the web page's content will be populated with that information and presented to you. But, each time you click on an <a href="http://www.mypeg.ca/explorer">explorer</a> node, your web browser is also sending queries to exactly the same web service endpoints. So, in one case a PHP script acts to query the endpoints; and, in other cases, a Flash <a href="http://openstructs.org/semantic-components">Semantic Component</a> does. Depending, all structWSF data can be accessed from quite different environments.</p>
<p>The other main characteristic of structWSF is that any kind of data can be imported in, and exported out, of the system. structWSF leverages RDF (Resource Description Framework) as the canonical data format that can be used to express any other formats. It is because of the usage of RDF that structWSF can act as an effective <a href="http://en.wikipedia.org/wiki/Extract,_transform,_load">ETL</a> (Extract, transform, load) system. Depending on the web service endpoint, the output formats currently supported by most of the endpoints are:</p>
<ul>
<li>text/xml (<a href="http://techwiki.openstructs.org/index.php/StructXML">structXML</a>)</li>
<li>application/json (<a href="http://techwiki.openstructs.org/index.php/StructXML">structXML</a> in JSON)</li>
<li>application/iron+json (<a href="http://techwiki.openstructs.org/index.php/Instance_Record_and_Object_Notation_%28irON%29_Specification#SUB-PART_2:_irJSON_PROFILE">irJSON</a>)</li>
<li>application/rdf+xml (<a href="http://www.w3.org/TR/REC-rdf-syntax/">RDF/XML</a>)</li>
<li>application/rdf+n3 (<a href="http://www.w3.org/DesignIssues/Notation3.html">RDF/N3</a>)</li>
</ul>
<p>But the architecture of the web service endpoints can easily accommodate other formats if needed for a specific usecase.</p>
<h3>Getting Data Out Of MyPeg.ca</h3>
<p>Now, how can you get data out of MyPeg.ca? There are really two methods. This blog post discusses the <em>CRUD: Read</em>, <em>Browse</em> and <em>Search</em> web service endpoints. In my next blog post, I will focus on using the SPARQL web service endpoint to do the same.</p>
<p>All of the query examples in this blog post will use a tool called <a href="http://curl.haxx.se/">Curl</a> to send the queries and to get back the resultsets. I encourage you to download and use that tool to test these endpoints and to gain a feeling for how it works. Also note that only the first record of each resultset is recorded below (of course, the actual results include all records).</p>
<h3>Browse</h3>
<p>The <a href="http://techwiki.openstructs.org/index.php/Browse">Browse web service endpoint</a> is used to return lists of records. These records can also be filtered according to their provenance (dataset), type and the attributes that describe them. Now, let's see how you can use this web service to get data out of MyPeg.ca.</p>
<p>First, there are three datasets available to the public:</p>
<ol>
<li>Well-being Indicators (http://www.mypeg.ca/wsf/datasets/258/)</li>
<li>Stories (http://www.mypeg.ca/wsf/datasets/272/)</li>
<li>PEG Framework (http://www.mypeg.ca/wsf/datasets/249/)</li>
</ol>
<p>The resultsets can be serialized using one of these four different formats:</p>
<ul>
<li>text/xml (structXML)</li>
<li>application/json (structXML in JSON)</li>
<li>application/rdf+xml (RDF/XML)</li>
<li>application/rdf+n3 (RDF/N3)</li>
</ul>
<p>Note: if one of your desired formats is not directly available at the endpoint level, you can always use one of the converter web service endpoints such as: <a href="http://techwiki.openstructs.org/index.php/Converter:_commON">commON</a>, <a href="http://techwiki.openstructs.org/index.php/Converter:_irJSON">irJSON</a> or <a href="http://techwiki.openstructs.org/index.php/Converter:_TSV/CSV">TSV/CSV</a>.</p>
<h4>Get the first 10 results of the Stories dataset in structXML</h4>
<p>Query:</p>
<div style="overflow:hidden;; " class="alignnone">
<div class="shadow_curl" style="margin:0 !important; max-width:100% !important;"><div class="codecolorer-container text railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">curl -H &quot;Accept: text/xml&quot; &quot;http://www.mypeg.ca/ws/browse/&quot; -d &quot;attributes=all&amp;amp;types=all&amp;amp;datasets=http%3A%2F%2Fwww.mypeg.ca%2Fwsf%2Fdatasets%2F272%2F&amp;amp;items=10&amp;amp;page=0&amp;amp;inference=on&amp;amp;include_aggregates=true&quot;</div></div>
<img src="http://fgiasson.com/blog/wp-content/plugins/shadows/shadow_curl.png" class="aligncenter shadow_img" style="margin:0 !important;height:10px;width:100%;"></div>
</div>
<p>StructXML resultset:</p>
<div style="overflow:hidden;; " class="alignnone">
<div class="shadow_curl" style="margin:0 !important; max-width:100% !important;"><div class="codecolorer-container xml railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="xml codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;utf-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;resultset<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;prefix</span> <span style="color: #000066;">entity</span>=<span style="color: #ff0000;">&quot;owl&quot;</span> <span style="color: #000066;">uri</span>=<span style="color: #ff0000;">&quot;http://www.w3.org/2002/07/owl#&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;prefix</span> <span style="color: #000066;">entity</span>=<span style="color: #ff0000;">&quot;rdf&quot;</span> <span style="color: #000066;">uri</span>=<span style="color: #ff0000;">&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;prefix</span> <span style="color: #000066;">entity</span>=<span style="color: #ff0000;">&quot;rdfs&quot;</span> <span style="color: #000066;">uri</span>=<span style="color: #ff0000;">&quot;http://www.w3.org/2000/01/rdf-schema#&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;prefix</span> <span style="color: #000066;">entity</span>=<span style="color: #ff0000;">&quot;wsf&quot;</span> <span style="color: #000066;">uri</span>=<span style="color: #ff0000;">&quot;http://purl.org/ontology/wsf#&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;subject</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;http://purl.org/ontology/muni#Story&quot;</span> <span style="color: #000066;">uri</span>=<span style="color: #ff0000;">&quot;http://www.mypeg.ca/wsf/datasets/272/resource/AgeOpportunity&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;predicate</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;http://purl.org/dc/terms/isPartOf&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;object</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;http://rdfs.org/ns/void#Dataset&quot;</span> <span style="color: #000066;">uri</span>=<span style="color: #ff0000;">&quot;http://www.mypeg.ca/wsf/datasets/272/&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/predicate<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;predicate</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;http://purl.org/ontology/iron#prefLabel&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;object</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;rdfs:Literal&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>Age <span style="color: #ddbb00;">&amp;amp;</span> Opportunity<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/object<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/predicate<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;predicate</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;http://purl.org/dc/terms/created&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;object</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;rdfs:Literal&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>2010-10-28T19:38:58+00:00<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/object<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/predicate<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;predicate</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;http://purl.org/ontology/bibo/abstract&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;object</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;rdfs:Literal&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>Amanda Macrae, Deborah Lorteau and Stacey Miller work for Age and Opportunity.<br />
The majority of clients are older adults living at lower socio economic status. When addressing the housing issue they say, &quot;In a nutshell, it's dire.&quot; There is simply not enou...<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/object<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/predicate<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;predicate</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;http://purl.org/ontology/peg#interviewee&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;object</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;rdfs:Literal&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>Amanda Macrae, Deborah Lorteau, Stacey Miller<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/object<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/predicate<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;predicate</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;http://purl.org/ontology/peg#interviewer&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;object</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;rdfs:Literal&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>Molly Johnson<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/object<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/predicate<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;predicate</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;http://purl.org/ontology/peg#storyRelatedAgencyProgram&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;object</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;rdfs:Literal&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>Age <span style="color: #ddbb00;">&amp;amp;</span> Opportunity<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/object<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/predicate<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;predicate</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;http://purl.org/ontology/sco#storyAnnotatedTextUri&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;object<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>http://www.mypeg.ca/scones/AgeOpportunity.xml<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/object<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/predicate<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;predicate</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;http://purl.org/ontology/sco#storyTextUri&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;object</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;rdfs:Literal&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>http://www.mypeg.ca/scones/AgeOpportunity.txt<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/object<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/predicate<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/subject<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/resultset<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></div></div>
<img src="http://fgiasson.com/blog/wp-content/plugins/shadows/shadow_curl.png" class="aligncenter shadow_img" style="margin:0 !important;height:10px;width:100%;"></div>
</div>
<h4>Get the 10 first results from all datasets that are records of type Neighborhoods in RDF/XML</h4>
<p>Query:</p>
<div style="overflow:hidden;; " class="alignnone">
<div class="shadow_curl" style="margin:0 !important; max-width:100% !important;"><div class="codecolorer-container text railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">curl -H &quot;Accept: application/rdf+xml &quot; &quot;http://www.mypeg.ca/ws/browse/&quot; -d &quot;attributes=all&amp;amp; type=http%3A%2F%2Fpurl.org%2Fontology%2Fpeg%23Neighborhood &amp;amp;datasets=all&amp;amp;items=10&amp;amp;page=0&amp;amp;inference=on&amp;amp;include_aggregates=true&quot;</div></div>
<img src="http://fgiasson.com/blog/wp-content/plugins/shadows/shadow_curl.png" class="aligncenter shadow_img" style="margin:0 !important;height:10px;width:100%;"></div>
</div>
<p>RDF/XML resultset:</p>
<div style="overflow:hidden;; " class="alignnone">
<div class="shadow_curl" style="margin:0 !important; max-width:100% !important;"><div class="codecolorer-container xml railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="xml codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;rdf:RDF</span>  <span style="color: #000066;">xmlns:owl</span>=<span style="color: #ff0000;">&quot;http://www.w3.org/2002/07/owl#&quot;</span> <span style="color: #000066;">xmlns:rdf</span>=<span style="color: #ff0000;">&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;</span> <span style="color: #000066;">xmlns:rdfs</span>=<span style="color: #ff0000;">&quot;http://www.w3.org/2000/01/rdf-schema#&quot;</span> <span style="color: #000066;">xmlns:wsf</span>=<span style="color: #ff0000;">&quot;http://purl.org/ontology/wsf#&quot;</span> <span style="color: #000066;">xmlns:ns0</span>=<span style="color: #ff0000;">&quot;http://purl.org/ontology/peg#&quot;</span> <span style="color: #000066;">xmlns:ns1</span>=<span style="color: #ff0000;">&quot;http://purl.org/dc/terms/&quot;</span> <span style="color: #000066;">xmlns:ns2</span>=<span style="color: #ff0000;">&quot;http://purl.org/ontology/iron#&quot;</span> <span style="color: #000066;">xmlns:ns3</span>=<span style="color: #ff0000;">&quot;&quot;</span> <span style="color: #000066;">xmlns:ns4</span>=<span style="color: #ff0000;">&quot;http://purl.org/dc/elements/1.1/&quot;</span> <span style="color: #000066;">xmlns:ns5</span>=<span style="color: #ff0000;">&quot;http://purl.org/ontology/aggregate#&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
<br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;ns0:Component</span> <span style="color: #000066;">rdf:about</span>=<span style="color: #ff0000;">&quot;http://purl.org/ontology/peg/framework#Safety&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;ns1:isPartOf</span> <span style="color: #000066;">rdf:resource</span>=<span style="color: #ff0000;">&quot;http://www.mypeg.ca/wsf/datasets/249/&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;ns2:prefLabel<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Safety<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/ns2:prefLabel<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;ns2:altLabel<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>safety<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/ns2:altLabel<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;ns3:<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>safety<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/ns3:<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;ns4:description<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Safety is the state of being &quot;safe&quot;, the condition of being protected against physical, social, spiritual, financial, political, emotional, occupational, psychological, educational or other types or consequences of failure, damage, error, accidents, harm or any other event which could be considered non-desirable.<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/ns4:description<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;rdfs:comment<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Includes the idea of safety prevention<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/rdfs:comment<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;rdfs:seeAlso<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>http://en.wikipedia.org/wiki/Safety<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/rdfs:seeAlso<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;ns0:hasIndicator</span> <span style="color: #000066;">rdf:resource</span>=<span style="color: #ff0000;">&quot;http://purl.org/ontology/peg/framework#HouseholdIncome&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;ns0:hasIndicator</span> <span style="color: #000066;">rdf:resource</span>=<span style="color: #ff0000;">&quot;http://purl.org/ontology/peg/framework#LowIncomeCutOffAfterTax&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;ns0:hasIndicator</span> <span style="color: #000066;">rdf:resource</span>=<span style="color: #ff0000;">&quot;http://purl.org/ontology/peg/framework#MarketBasketMeasure&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;ns0:hasIndicator</span> <span style="color: #000066;">rdf:resource</span>=<span style="color: #ff0000;">&quot;http://purl.org/ontology/peg/framework#ParticipationInSportsAndRecreation&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;ns0:hasIndicator</span> <span style="color: #000066;">rdf:resource</span>=<span style="color: #ff0000;">&quot;http://purl.org/ontology/peg/framework#MaternalSocialIsolation&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;ns0:hasIndicator</span> <span style="color: #000066;">rdf:resource</span>=<span style="color: #ff0000;">&quot;http://purl.org/ontology/peg/framework#PersonalSafety&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;ns0:hasIndicator</span> <span style="color: #000066;">rdf:resource</span>=<span style="color: #ff0000;">&quot;http://purl.org/ontology/peg/framework#EarlyDevelopmentInstrument&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;ns0:hasIndicator</span> <span style="color: #000066;">rdf:resource</span>=<span style="color: #ff0000;">&quot;http://purl.org/ontology/peg/framework#HighSchoolGraduationRate&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;ns0:hasIndicator</span> <span style="color: #000066;">rdf:resource</span>=<span style="color: #ff0000;">&quot;http://purl.org/ontology/peg/framework#LongTermUnemployment&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;ns0:hasIndicator</span> <span style="color: #000066;">rdf:resource</span>=<span style="color: #ff0000;">&quot;http://purl.org/ontology/peg/framework#TeenageBirths&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;ns0:isComponentOf</span> <span style="color: #000066;">rdf:resource</span>=<span style="color: #ff0000;">&quot;http://purl.org/ontology/peg/framework#BasicNeeds&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;ns0:isComponentOf</span> <span style="color: #000066;">rdf:resource</span>=<span style="color: #ff0000;">&quot;http://purl.org/ontology/peg/framework#Poverty&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/ns0:Component<span style="color: #000000; font-weight: bold;">&gt;</span></span></span><br />
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/rdf:RDF<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></div></div>
<img src="http://fgiasson.com/blog/wp-content/plugins/shadows/shadow_curl.png" class="aligncenter shadow_img" style="margin:0 !important;height:10px;width:100%;"></div>
</div>
<h3>Search</h3>
<p>The <a href="http://techwiki.openstructs.org/index.php/Search">Search web service endpoint</a> is also used to return lists of records. These records should match a search string and can also be filtered according to their provenance (dataset), type and the attributes that describe them.</p>
<p>The same mime types and datasets as the ones for the Browse web service are available for the Search endpoint.</p>
<h4>Searching for records with the keyword "poverty" and get resultsets in RDF/N3</h4>
<p>Query:</p>
<div style="overflow:hidden;; " class="alignnone">
<div class="shadow_curl" style="margin:0 !important; max-width:100% !important;"><div class="codecolorer-container text railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">curl -H &quot;Accept: application/rdf+n3&quot; &quot;http://www.mypeg.ca/ws/search/&quot; -d &quot;query=poverty&amp;amp;datasets=all&amp;amp;items=10&amp;amp;page=0&amp;amp;inference=on&amp;amp;include_aggregates=true&quot;</div></div>
<img src="http://fgiasson.com/blog/wp-content/plugins/shadows/shadow_curl.png" class="aligncenter shadow_img" style="margin:0 !important;height:10px;width:100%;"></div>
</div>
<p>RDF/N3 resultset:</p>
<div style="overflow:hidden;; " class="alignnone">
<div class="shadow_curl" style="margin:0 !important; max-width:100% !important;"><div class="codecolorer-container text railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">@prefix rdf: &lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#&gt; .<br />
@prefix wsf: &lt;http://purl.org/ontology/wsf#&gt; .<br />
<br />
&lt;http://purl.org/ontology/peg/framework#Poverty&gt; a &lt;http://purl.org/ontology/peg#CrossCuttingIssue&gt; ;<br />
&lt;http://purl.org/dc/terms/isPartOf&gt; &lt;http://www.mypeg.ca/wsf/datasets/249/&gt; ;<br />
&lt;http://purl.org/ontology/iron#prefLabel&gt; &quot;&quot;&quot;Poverty&quot;&quot;&quot; ;<br />
&lt;http://purl.org/dc/elements/1.1/description&gt; &quot;&quot;&quot;Poverty is not having the sufficient resources, capabilities, choices, security and power necessary to enjoy an adequate standard of living.  Poverty includes much more than a lack of money.  It includes being excluded from ordinary living patterns, customs and activities.  Consequently, people living in poverty are often unable to participate fully in their communities or to reach their full potential.&quot;&quot;&quot; ;<br />
&lt;http://www.w3.org/2000/01/rdf-schema#seeAlso&gt; &quot;&quot;&quot;http://en.wikipedia.org/wiki/Poverty&quot;&quot;&quot; .</div></div>
<img src="http://fgiasson.com/blog/wp-content/plugins/shadows/shadow_curl.png" class="aligncenter shadow_img" style="margin:0 !important;height:10px;width:100%;"></div>
</div>
<h3>CRUD: Read</h3>
<p>The Browse and Search web service endpoints are really used to find lists of records according to some provided criteria. However, the complete description of these records is not returned by these endpoints, but only the information necessary to create the proper list to display to users in a user interface. So, to get the complete description of a record (or multiples thereof), you have to use the <a href="http://techwiki.openstructs.org/index.php/CRUD:_Read">CRUD: Read web service endpoint</a>. Also, sometimes you may get a reference to a record hosted on a structWSF node, then CRUD: Read is the way to get its full description.</p>
<h4>Get the full description of the Ida story in irJSON</h4>
<p>Query:</p>
<div style="overflow:hidden;; " class="alignnone">
<div class="shadow_curl" style="margin:0 !important; max-width:100% !important;"><div class="codecolorer-container text railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">curl -H &quot;Accept: application/iron+json&quot; &quot;http://www.mypeg.ca/ws/crud/read/?uri=http%3A%2F%2Fwww.mypeg.ca%2Fwsf%2Fdatasets%2F272%2Fresource%2FIda&amp;amp;dataset=http%3A%2F%2Fwww.mypeg.ca%2Fwsf%2Fdatasets%2F272%2F&amp;amp;include_reification=true&amp;amp;include_linksback=false</div></div>
<img src="http://fgiasson.com/blog/wp-content/plugins/shadows/shadow_curl.png" class="aligncenter shadow_img" style="margin:0 !important;height:10px;width:100%;"></div>
</div>
<p>irJSON resulset:</p>
<div style="overflow:hidden;; " class="alignnone">
<div class="shadow_curl" style="margin:0 !important; max-width:100% !important;"><div class="codecolorer-container javascript railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009900;">&#123;</span><br />
<span style="color: #3366CC;">&quot;dataset&quot;</span><span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span><br />
<span style="color: #3366CC;">&quot;linkage&quot;</span><span style="color: #339933;">:</span> <span style="color: #009900;">&#91;</span><br />
<span style="color: #009900;">&#123;</span><br />
<span style="color: #3366CC;">&quot;linkedType&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;application/rdf+xml&quot;</span><span style="color: #339933;">,</span><br />
<span style="color: #3366CC;">&quot;attributeList&quot;</span><span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span><br />
<span style="color: #3366CC;">&quot;created&quot;</span><span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span><br />
<span style="color: #3366CC;">&quot;mapTo&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;http://purl.org/dc/terms/created&quot;</span><br />
<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span><br />
<span style="color: #3366CC;">&quot;isAbout&quot;</span><span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span><br />
<span style="color: #3366CC;">&quot;mapTo&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;http://umbel.org/umbel#isAbout&quot;</span><br />
<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span><br />
<span style="color: #3366CC;">&quot;prefLabel&quot;</span><span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span><br />
<span style="color: #3366CC;">&quot;mapTo&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;http://purl.org/ontology/iron#prefLabel&quot;</span><br />
<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span><br />
<span style="color: #3366CC;">&quot;interviewee&quot;</span><span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span><br />
<span style="color: #3366CC;">&quot;mapTo&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;http://purl.org/ontology/peg#interviewee&quot;</span><br />
<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span><br />
<span style="color: #3366CC;">&quot;interviewer&quot;</span><span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span><br />
<span style="color: #3366CC;">&quot;mapTo&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;http://purl.org/ontology/peg#interviewer&quot;</span><br />
<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span><br />
<span style="color: #3366CC;">&quot;abstract&quot;</span><span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span><br />
<span style="color: #3366CC;">&quot;mapTo&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;http://purl.org/ontology/bibo/abstract&quot;</span><br />
<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span><br />
<span style="color: #3366CC;">&quot;storyVideoAudio&quot;</span><span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span><br />
<span style="color: #3366CC;">&quot;mapTo&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;http://purl.org/ontology/peg#storyVideoAudio&quot;</span><br />
<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span><br />
<span style="color: #3366CC;">&quot;storyAnnotatedTextUri&quot;</span><span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span><br />
<span style="color: #3366CC;">&quot;mapTo&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;http://purl.org/ontology/sco#storyAnnotatedTextUri&quot;</span><br />
<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span><br />
<span style="color: #3366CC;">&quot;storyTextUri&quot;</span><span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span><br />
<span style="color: #3366CC;">&quot;mapTo&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;http://purl.org/ontology/sco#storyTextUri&quot;</span><br />
<span style="color: #009900;">&#125;</span><br />
<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span><br />
<span style="color: #3366CC;">&quot;typeList&quot;</span><span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span><br />
<span style="color: #3366CC;">&quot;Story&quot;</span><span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span><br />
<span style="color: #3366CC;">&quot;mapTo&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;http://purl.org/ontology/muni#Story&quot;</span><br />
<span style="color: #009900;">&#125;</span><br />
<span style="color: #009900;">&#125;</span><br />
<span style="color: #009900;">&#125;</span><br />
<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span><br />
<span style="color: #3366CC;">&quot;recordList&quot;</span><span style="color: #339933;">:</span> <span style="color: #009900;">&#91;</span><br />
<span style="color: #009900;">&#123;</span><br />
<span style="color: #3366CC;">&quot;id&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;http://www.mypeg.ca/wsf/datasets/272/resource/Ida&quot;</span><span style="color: #339933;">,</span><br />
<span style="color: #3366CC;">&quot;type&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Story&quot;</span><span style="color: #339933;">,</span><br />
<span style="color: #3366CC;">&quot;created&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;2010-10-28T18:11:27+00:00&quot;</span><span style="color: #339933;">,</span><br />
<span style="color: #3366CC;">&quot;isAbout&quot;</span><span style="color: #339933;">:</span> <span style="color: #009900;">&#91;</span><br />
<span style="color: #009900;">&#123;</span><br />
<span style="color: #3366CC;">&quot;ref&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;@@http://purl.org/ontology/peg/framework#EducationAndLearning&quot;</span><br />
<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span><br />
<span style="color: #009900;">&#123;</span><br />
<span style="color: #3366CC;">&quot;ref&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;@@http://purl.org/ontology/peg/framework#Health&quot;</span><br />
<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span><br />
<span style="color: #009900;">&#123;</span><br />
<span style="color: #3366CC;">&quot;ref&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;@@http://purl.org/ontology/peg/framework#Program&quot;</span><br />
<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span><br />
<span style="color: #009900;">&#123;</span><br />
<span style="color: #3366CC;">&quot;ref&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;@@http://purl.org/ontology/peg/framework#Income&quot;</span><br />
<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span><br />
<span style="color: #009900;">&#123;</span><br />
<span style="color: #3366CC;">&quot;ref&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;@@http://purl.org/ontology/peg/framework#Poverty&quot;</span><br />
<span style="color: #009900;">&#125;</span>     <span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span><br />
<span style="color: #3366CC;">&quot;prefLabel&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Ida&quot;</span><span style="color: #339933;">,</span><br />
<span style="color: #3366CC;">&quot;interviewee&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Ida&quot;</span><span style="color: #339933;">,</span><br />
<span style="color: #3366CC;">&quot;interviewer&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;Christa Rust&quot;</span><span style="color: #339933;">,</span><br />
<span style="color: #3366CC;">&quot;abstract&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;'Poverty is earning just enough to get by; never having money for extras.'<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\n</span>Ida is the mother of two grown children, eight years apart.  She lives in a small bachelor suite, which costs her $428 per month, or 62% of her income.  She volunteers twice a we...&quot;</span><span style="color: #339933;">,</span><br />
<span style="color: #3366CC;">&quot;storyVideoAudio&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;http://www.youtube.com/v/0zIqtYhiHfM&quot;</span><span style="color: #339933;">,</span><br />
<span style="color: #3366CC;">&quot;storyAnnotatedTextUri&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;http://www.mypeg.ca/scones/Ida.xml&quot;</span><span style="color: #339933;">,</span><br />
<span style="color: #3366CC;">&quot;storyTextUri&quot;</span><span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;http://www.mypeg.ca/scones/Ida.txt&quot;</span><br />
<span style="color: #009900;">&#125;</span><br />
<span style="color: #009900;">&#93;</span><br />
<span style="color: #009900;">&#125;</span></div></div>
<img src="http://fgiasson.com/blog/wp-content/plugins/shadows/shadow_curl.png" class="aligncenter shadow_img" style="margin:0 !important;height:10px;width:100%;"></div>
</div>
<h4>Get Well-Being record description with linkbacks in RDF+N3</h4>
<p>The characteristic of this query is that I enabled the "include_linksback" parameter. This returns a reference to all the records, in the datasets hosted on the structWSF node, that refers to that target record.</p>
<p>Query:</p>
<div style="overflow:hidden;; " class="alignnone">
<div class="shadow_curl" style="margin:0 !important; max-width:100% !important;"><div class="codecolorer-container text railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">curl -H &quot;Accept: application/rdf+n3&quot; &quot;http://www.mypeg.ca/ws/crud/read/?uri=http%3A%2F%2Fpurl.org%2Fontology%2Fpeg%2Fframework%23WellBeing&amp;amp;datast=http%3A%2F%2Fwww.mypeg.ca%2Fwsf%2Fdatasets%2F249%2F&amp;amp;registered_ip=self%3A%3A0&amp;amp;include_reification=true&amp;amp;include_linksback=true&quot;</div></div>
<img src="http://fgiasson.com/blog/wp-content/plugins/shadows/shadow_curl.png" class="aligncenter shadow_img" style="margin:0 !important;height:10px;width:100%;"></div>
</div>
<p>RDF+N3 resultset:</p>
<div style="overflow:hidden;; " class="alignnone">
<div class="shadow_curl" style="margin:0 !important; max-width:100% !important;"><div class="codecolorer-container text railscasts" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">@prefix rdf: &lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#&gt; .<br />
<br />
&lt;http://purl.org/ontology/peg/framework#WellBeing&gt; a &lt;http://purl.org/ontology/peg/framework#WellBeing&gt; ;<br />
&lt;http://purl.org/ontology/iron#prefLabel&gt; &quot;&quot;&quot;Well-being&quot;&quot;&quot; ;<br />
&lt;http://purl.org/dc/elements/1.1/description&gt; &quot;&quot;&quot;Well-being refers to the general quality of life experienced by individuals and communities. The elements of wellbeing include: the ability to meet basic needs, the economy, health, the built environment, governance, education and learning, the natural environment, and social vitality.&quot;&quot;&quot; ;<br />
&lt;http://purl.org/ontology/sco#displayComponent&gt; &lt;http://purl.org/ontology/sco#sRelationBrowser&gt; .<br />
<br />
&lt;http://purl.org/ontology/peg/framework#WellBeing&gt; a &lt;http://www.w3.org/2002/07/owl#Thing&gt; ;<br />
&lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#type&gt; &lt;http://purl.org/ontology/peg/framework#WellBeing&gt; .<br />
<br />
&lt;http://purl.org/ontology/peg/framework#Economy&gt; a &lt;http://www.w3.org/2002/07/owl#Thing&gt; ;<br />
&lt;http://purl.org/ontology/peg#isThemeOf&gt; &lt;http://purl.org/ontology/peg/framework#WellBeing&gt; .<br />
<br />
&lt;http://purl.org/ontology/peg/framework#Governance&gt; a &lt;http://www.w3.org/2002/07/owl#Thing&gt; ;<br />
&lt;http://purl.org/ontology/peg#isThemeOf&gt; &lt;http://purl.org/ontology/peg/framework#WellBeing&gt; .<br />
<br />
&lt;http://purl.org/ontology/peg/framework#BuiltEnvironment&gt; a &lt;http://www.w3.org/2002/07/owl#Thing&gt; ;<br />
&lt;http://purl.org/ontology/peg#isThemeOf&gt; &lt;http://purl.org/ontology/peg/framework#WellBeing&gt; .<br />
<br />
&lt;http://purl.org/ontology/peg/framework#NaturalEnvironment&gt; a &lt;http://www.w3.org/2002/07/owl#Thing&gt; ;<br />
&lt;http://purl.org/ontology/peg#isThemeOf&gt; &lt;http://purl.org/ontology/peg/framework#WellBeing&gt; .<br />
<br />
&lt;http://purl.org/ontology/peg/framework#SocialVitality&gt; a &lt;http://www.w3.org/2002/07/owl#Thing&gt; ;<br />
&lt;http://purl.org/ontology/peg#isThemeOf&gt; &lt;http://purl.org/ontology/peg/framework#WellBeing&gt; .<br />
<br />
&lt;http://purl.org/ontology/peg/framework#BasicNeeds&gt; a &lt;http://www.w3.org/2002/07/owl#Thing&gt; ;<br />
&lt;http://purl.org/ontology/peg#isThemeOf&gt; &lt;http://purl.org/ontology/peg/framework#WellBeing&gt; .<br />
<br />
&lt;http://purl.org/ontology/peg/framework#EducationAndLearning&gt; a &lt;http://www.w3.org/2002/07/owl#Thing&gt; ;<br />
&lt;http://purl.org/ontology/peg#isThemeOf&gt; &lt;http://purl.org/ontology/peg/framework#WellBeing&gt; .<br />
<br />
&lt;http://purl.org/ontology/peg/framework#Health&gt; a &lt;http://www.w3.org/2002/07/owl#Thing&gt; ;<br />
&lt;http://purl.org/ontology/peg#isThemeOf&gt; &lt;http://purl.org/ontology/peg/framework#WellBeing&gt; .</div></div>
<img src="http://fgiasson.com/blog/wp-content/plugins/shadows/shadow_curl.png" class="aligncenter shadow_img" style="margin:0 !important;height:10px;width:100%;"></div>
</div>
<h3>General Endpoint Parameters</h3>
<p>The general parameters available for each of these web services is provided in their respective <a href="http://techwiki.openstructs.org/">TechWiki</a> documentation. For that detailed information, see the <a href="http://techwiki.openstructs.org/index.php/Browse">Browse</a>, <a href="http://techwiki.openstructs.org/index.php/Search">Search</a>, or <a href="http://techwiki.openstructs.org/index.php/CRUD:_Read">CRUD: Read</a> articles.</p>
<h3>Conclusion</h3>
<p>As you can see, agents can get different kinds of data from the MyPeg.ca portal by querying a set of web service endpoints. This is one way to get data out of the system. These data can then be accessed for indexing in other systems, for direct use, or for dynamic applications like browsing the nodes in the <a href="http://www.mypeg.ca/explorer">explorer</a>.</p>
<p>This is one of the ways to get data out of the system. A user can also export that same information from the Export features on the Browse, Search and Record View pages. Also, other methods will be explained in the next blog posts from this MyPeg.ca series.</p>
<p>All in all, this shows how effective structWSF can be to integrate, manage and publish a wide range of data in different data formats. It also shows how completely different parts of your software architecture can leverage your information, the way you want, from anywhere on the Internet.</p>
]]></content:encoded>
			<wfw:commentRss>http://fgiasson.com/blog/index.php/2010/11/29/getting-data-out-of-mypeg-ca-using-structwsf-endpoints/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>MyPeg.ca &#8211; A Community Indicators Web Portal Using Semantic Web Technologies</title>
		<link>http://fgiasson.com/blog/index.php/2010/11/08/mypeg-ca-a-community-indicators-web-portal-using-semantic-web-technologies/</link>
		<comments>http://fgiasson.com/blog/index.php/2010/11/08/mypeg-ca-a-community-indicators-web-portal-using-semantic-web-technologies/#comments</comments>
		<pubDate>Mon, 08 Nov 2010 18:14:53 +0000</pubDate>
		<dc:creator>Frederick Giasson</dc:creator>
				<category><![CDATA[Citizen DAN]]></category>
		<category><![CDATA[conStruct]]></category>
		<category><![CDATA[irON]]></category>
		<category><![CDATA[Semantic Components]]></category>
		<category><![CDATA[Semantic Web]]></category>
		<category><![CDATA[Structured Dynamics]]></category>
		<category><![CDATA[structWSF]]></category>
		<category><![CDATA[#mypeg]]></category>
		<category><![CDATA[#open semantic framework]]></category>

		<guid isPermaLink="false">http://fgiasson.com/blog/?p=1120</guid>
		<description><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=MyPeg.ca &#8211; A Community Indicators Web Portal Using Semantic Web Technologies&amp;rft.aulast=Giasson&amp;rft.aufirst=Frederick&amp;rft.subject=Citizen DAN&amp;rft.subject=conStruct&amp;rft.subject=irON&amp;rft.subject=Semantic Components&amp;rft.subject=Semantic Web&amp;rft.subject=Structured Dynamics&amp;rft.subject=structWSF&amp;rft.source=Frederick Giasson&#8217;s Weblog&amp;rft.date=2010-11-08&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://fgiasson.com/blog/index.php/2010/11/08/mypeg-ca-a-community-indicators-web-portal-using-semantic-web-technologies/&amp;rft.language=English"></span>
Now that the MyPeg.ca project has been unveiled at the Winnipeg Poverty Reduction Partnership Forum, I can now start to write about each and every feature of this innovative website. MyPeg.ca is a public indicators Web portal for the Canadian city of Winnipeg. It is supported by an open-source semantic web framework called OSF. This [...]]]></description>
			<content:encoded><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=MyPeg.ca &#8211; A Community Indicators Web Portal Using Semantic Web Technologies&amp;rft.aulast=Giasson&amp;rft.aufirst=Frederick&amp;rft.subject=Citizen DAN&amp;rft.subject=conStruct&amp;rft.subject=irON&amp;rft.subject=Semantic Components&amp;rft.subject=Semantic Web&amp;rft.subject=Structured Dynamics&amp;rft.subject=structWSF&amp;rft.source=Frederick Giasson&#8217;s Weblog&amp;rft.date=2010-11-08&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://fgiasson.com/blog/index.php/2010/11/08/mypeg-ca-a-community-indicators-web-portal-using-semantic-web-technologies/&amp;rft.language=English"></span>
<table>
<tbody>
<tr>
<td>Now that the <a href="http://www.mypeg.ca/">MyPeg.ca</a> project has been unveiled at the <a href="http://www.wprc.ca/">Winnipeg Poverty Reduction Partnership Forum</a>, I can now start to write about each and every feature of this innovative website.</td>
<td valign="top"><img title="Peg" src="http://www.mkbergman.com/wp-content/themes/ai3/images/peg_180.png" alt="Peg" width="180" height="75" /></td>
</tr>
</tbody>
</table>
<p>MyPeg.ca is a public indicators Web portal for the Canadian city of  Winnipeg. It is supported by an open-source semantic web framework  called <a href="http://openstructs.org/open-semantic-framework">OSF</a>. This initial beta version of the Web portal emphasizes the integration,  management, exploration and display of a few hundred Well-being  indicators&#8217; data for the city.</p>
<p>This community indicators portal is currently the best example of a <a href="http://citizen-dan.org/">Citizen Dan</a> instance (by <a href="http://structureddynamics.com/">Structured Dynamics</a>). MyPeg.ca has been developed using the complete OSF (Open Semantic Framework) technologies stack. It is the reason why I (<a href="http://structureddynamics.com/about.html">we</a>) are really proud to start writing about this new innovative project. Mike also <a href="http://www.mkbergman.com/928/peg-community-indicator-system-unveiled/">published an article</a> that talk about other characteristics of the Peg project.</p>
<p>However, this project would not have been possible without the vision and the dedication of the <a href="http://www.iisd.org/">IISD</a> and the <a href="http://www.unitedwaywinnipeg.mb.ca/">United Way of Winnipeg</a> teams along with their partners. Also, it would not have been that well designed without <a href="http://tactica.ca/">Tactica</a>&#8216;s high quality graphics and design work.</p>
<h3>MyPeg.ca&#8217;s Technology Stack</h3>
<p>The project fully integrates, and leverages, the <a href="http://openstructs.org/open-semantic-framework">OSF</a> (Open Semantic Framework) technologies stack and is based on the <a href="http://citizen-dan.org/">Citizen Dan</a> community indicators principles. In the coming weeks, I will write about all and every aspects of the portal, however let&#8217;s take a first general overview of what is in the box.</p>
<p>The OSF stack is represented by this beautiful semantic muffin:</p>
<p style="text-align: center;">
<div class="wp-caption aligncenter" style="width: 460px"><img class="  " title="OSF layers" src="http://openstructs.org/sites/openstructs.org/files/images/osf_layers.png" alt="OSF layers" width="450" /><p class="wp-caption-text">OSF layers</p></div>
<p>Everything starts with MyPeg&#8217;s existing assets:</p>
<ol>
<li>Their Peg Framework which is the conceptual framework they created to analyze different facets of their community by leveraging a series of hundreds of indicators.</li>
<li>The indicators data that they aggregated and collected from different federal, provincial, municipal and local sources</li>
<li>The interviews they are performing with tens, and eventually hundreds, of Winnipeg citizens</li>
</ol>
<p>Then all this data has been imported into the <a href="http://openstructs.org/structwsf">structWSF</a> semantic data management framework by using two other pieces of technology:</p>
<ol>
<li>The indicators data is described using the commON <a href="http://openstructs.org/iron">irON</a> profile, and is maintained by the IISD team using a set of Excel spreadsheets. Then the dataset have been imported using the structImport <a href="http://openstructs.org/construct">conStruct</a> module.</li>
<li>The interviews have been analyzed, tagged and imported in the system by using the <a href="http://structureddynamics.com/scones.html">Scones</a> service and its structScones conStruct user interface.</li>
</ol>
<p>Once all the data gets imported into the structWSF instance, it becomes available to all the <a href="http://openstructs.org/construct">conStruct</a> modules, all the <a href="http://openstructs.org/semantic-components">Semantic Components</a> and all other tools that communicate with the structWSF web service endpoints.</p>
<p>Then ontologies have been used to describe the Peg Framework and to describe all the attributes of all the records (Neighborhoods, Cities, Community Areas and Stories). Already existing ontologies such as <a href="http://techwiki.openstructs.org/index.php/SCO_Ontology">SCO</a> have also been used for different criteria (such as driving the usage of the Semantic Component tools).</p>
<p>Then the <a href="http://techwiki.openstructs.org/index.php/SRelationBrowser">sRelationBrowser</a>, <a href="http://techwiki.openstructs.org/index.php/Workbench:_Create_Dashboard_Views">sDashboard</a>, <a href="http://techwiki.openstructs.org/index.php/SMap">sMap</a>, <a href="http://techwiki.openstructs.org/index.php/SStory">sStory</a>, <a href="http://techwiki.openstructs.org/index.php/SBarChart">sBarChart</a> and the <a href="http://techwiki.openstructs.org/index.php/SLinearChart">sLinearChart</a> <a href="http://openstructs.org/semantic-components">Semantic Components</a> along with the <a href="http://techwiki.openstructs.org/index.php/Portable_Control_Application">PortableControlApplication</a> and <a href="http://techwiki.openstructs.org/index.php/Workbench:_Create_Dashboard_Views">Workbench</a> applications have been used by Peg to create, manage, explore and publish information from their datasets.</p>
<p>Finally, the entire portal is published using <a href="http://drupal.org/">Drupal</a> and the set of <a href="http://openstructs.org/construct">conStruct</a> modules. conStruct is the user interface to the structWSF web service endpoints. The mix of Drupal &amp; conStruct templating technologies make it the perfect match to expose all the data, in different ways, by embedding different tools (such as the Semantic Components) depending on different criteria (user permissions, how the information is described into the system, etc.).</p>
<p>This is not a simple technology stack. However, this MyPeg.ca project is a good example of how an organization that never worked with semantic web technologies in the past have been able to has a long term vision of its objectives and how it understands that semantic technologies could help it to reach the aims of its vision. Then it demonstrates how everything has been integrated in an innovative Web portal.</p>
<h3>Next Steps&#8230;</h3>
<p>As I said above, in the coming weeks I will write about each of these technologies. I will show how each of them have been leveraged into the MyPeg.ca portal: how such generic tools have been used for highly specific tasks within the Peg project. Here is an overview of what is coming, where each main topic will result in a new blog post:</p>
<ul>
<li>How to integrate MyPeg indicators data into any Web application by using the structWSF web service endpoint</li>
<li>Querying the MyPeg datasets, the geeky way, using the <a href="http://techwiki.openstructs.org/index.php/SPARQL">SPARQL</a> endpoint</li>
<li>Six ways to get data out of the system
<ul>
<li>By using the CrudRead/Search/Browse web service endpoints</li>
<li>By querying the SPARQL endpoint</li>
<li>By dereferencing record URIs</li>
<li>By using the export features on <a href="http://www.mypeg.ca/conStruct/view/?uri=http%3A%2F%2Fwww.mypeg.ca%2FconStruct%2Fdatasets%2F258%2Fresource%2Fneighborhood%2F187&amp;dataset=http%3A%2F%2Fwww.mypeg.ca%2Fwsf%2Fdatasets%2F258%2F">any record view pages</a></li>
<li>By using the export features of the <a href="http://www.mypeg.ca/conStruct/search/?query=poverty">search</a>/<a href="http://www.mypeg.ca/conStruct/browse/?browse=true&amp;dataset=http%3A%2F%2Fwww.mypeg.ca%2Fwsf%2Fdatasets%2F258%2F">browse</a> modules pages</li>
<li>By using the <a href="http://www.mypeg.ca/conStruct/export/">structExport</a> conStruct module</li>
</ul>
</li>
</ul>
<ul>
<li>How to create and maintain indicators dashboard sessions using the Workbench application</li>
<li>How to integrate dashboard sessions into any Web page
<ul>
<li>Displaying dashboard sessions into <a href="http://www.mypeg.ca/conStruct/view/?uri=http%3A%2F%2Fwww.mypeg.ca%2FconStruct%2Fdatasets%2F258%2Fresource%2Fneighborhood%2F187&amp;dataset=http%3A%2F%2Fwww.mypeg.ca%2Fwsf%2Fdatasets%2F258%2F">record pages</a></li>
<li>Displaying dashboard sessions while using the <a href="http://www.mypeg.ca/explorer">Peg framework explorer tool</a></li>
<li>Displaying dashboard sessions into <a href="http://www.mypeg.ca/content/early-development-instrument">indicators analysis reports</a></li>
</ul>
</li>
</ul>
<ul>
<li>How to use <a href="http://www.mypeg.ca/map">maps</a>:
<ul>
<li>as an information <a href="http://www.mypeg.ca/map">browsing tool</a></li>
<li>to contextualize <a href="http://www.mypeg.ca/conStruct/view/?uri=http%3A%2F%2Fwww.mypeg.ca%2FconStruct%2Fdatasets%2F258%2Fresource%2Fneighborhood%2F187&amp;dataset=http%3A%2F%2Fwww.mypeg.ca%2Fwsf%2Fdatasets%2F258%2F">instance records</a></li>
<li>to contextualize information in dashboard sessions</li>
</ul>
</li>
</ul>
<ul>
<li>How to use the <a href="http://www.mypeg.ca/explorer">explorer</a> (sRelationBrowser) to browse conceptual structure and to display all kind of related information at each step</li>
<li>Use of <a href="http://techwiki.openstructs.org/index.php/Scones:_Story_Tagging">Scones</a> to analyze, tag, index and display unstructured data</li>
<li>Use of ontologies to drive the system
<ul>
<li>How ontologies are used to describe conceptual frameworks that drive these portals</li>
<li>How ontologies are used to drive the semantic components (<a href="http://techwiki.openstructs.org/index.php/SCO_Ontology">SCO</a>)</li>
</ul>
</li>
</ul>
<ul>
<li>Use of the <a href="http://techwiki.openstructs.org/index.php/Instance_Record_and_Object_Notation_%28irON%29_Specification#SUB-PART_3:_commON_PROFILE">commON</a> <a href="http://openstructs.org/iron">irON</a> profile and conStruct to serialize indicators data and to import it into the system
<ul>
<li>The benefits of commON as a common ground between the semantic web practitioner and the client.</li>
<li>commON as a wonderful format to manage indicator related datasets by indicators practitioners.</li>
</ul>
</li>
</ul>
<p>So stay tuned, because plenty of innovative stuff is coming!</p>
]]></content:encoded>
			<wfw:commentRss>http://fgiasson.com/blog/index.php/2010/11/08/mypeg-ca-a-community-indicators-web-portal-using-semantic-web-technologies/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>structWSF Web Services Tutorial</title>
		<link>http://fgiasson.com/blog/index.php/2010/02/18/structwsf-web-services-tutorial/</link>
		<comments>http://fgiasson.com/blog/index.php/2010/02/18/structwsf-web-services-tutorial/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 21:45:40 +0000</pubDate>
		<dc:creator>Frederick Giasson</dc:creator>
				<category><![CDATA[conStruct]]></category>
		<category><![CDATA[irON]]></category>
		<category><![CDATA[Structured Dynamics]]></category>
		<category><![CDATA[structWSF]]></category>
		<category><![CDATA[#open semantic framework]]></category>
		<category><![CDATA[#structwsf]]></category>

		<guid isPermaLink="false">http://fgiasson.com/blog/?p=1044</guid>
		<description><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=structWSF Web Services Tutorial&amp;rft.aulast=Giasson&amp;rft.aufirst=Frederick&amp;rft.subject=conStruct&amp;rft.subject=irON&amp;rft.subject=Structured Dynamics&amp;rft.subject=structWSF&amp;rft.source=Frederick Giasson&#8217;s Weblog&amp;rft.date=2010-02-18&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://fgiasson.com/blog/index.php/2010/02/18/structwsf-web-services-tutorial/&amp;rft.language=English"></span>
One thing that was hard to do with structWSF was explaining what structWSF is, and how users can interact with it. For most people, structWSF was abstracted behind conStruct and they didn't know that each single functionalities of conStruct was bound to one, or multiple queries to one, or multiple, structWSF instance. It is the [...]]]></description>
			<content:encoded><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=structWSF Web Services Tutorial&amp;rft.aulast=Giasson&amp;rft.aufirst=Frederick&amp;rft.subject=conStruct&amp;rft.subject=irON&amp;rft.subject=Structured Dynamics&amp;rft.subject=structWSF&amp;rft.source=Frederick Giasson&#8217;s Weblog&amp;rft.date=2010-02-18&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://fgiasson.com/blog/index.php/2010/02/18/structwsf-web-services-tutorial/&amp;rft.language=English"></span>
<p>One thing that was hard to do with <a href="http://openstructs.org/structwsf/">structWSF</a> was explaining what structWSF is, and how users can interact with it. For most people, structWSF was abstracted behind <a href="http://constructscs.com/">conStruct</a> and they didn't know that each single functionalities of conStruct was bound to one, or multiple queries to one, or multiple, structWSF instance.</p>
<p>It is the reason why we took the time to write a complete structWSF interaction tutorial. This tutorial explains what the general structWSF architecture is, and it describes a series of general interaction usecases. We hope that this tutorial will helps developers and system implementators understanding the capabilities of structWSF and how they can use it.</p>
<p><a href="http://openstructs.org/structwsf/web-services-tutorial">You can read the complete structWSF Web Services Tutorial here.</a></p>
<p>Additionally, we released a new version of <a href="http://openstructs.org/blog/2010/2/fgiasson/structwsf-10a5-released">structWSF</a>, <a href="http://constructscs.com/blog/fgiasson/2010/2/construct-6x-1x-dev-5-released">conStruct</a> and the <a href="http://openstructs.org/blog/2010/2/fgiasson/irjson-parser-10a2-released">irJSON Parser</a> which are products of this toturial.</p>
]]></content:encoded>
			<wfw:commentRss>http://fgiasson.com/blog/index.php/2010/02/18/structwsf-web-services-tutorial/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>commON and irJSON PHP parsers released</title>
		<link>http://fgiasson.com/blog/index.php/2009/10/20/common-and-irjson-php-parsers-released/</link>
		<comments>http://fgiasson.com/blog/index.php/2009/10/20/common-and-irjson-php-parsers-released/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 21:15:45 +0000</pubDate>
		<dc:creator>Frederick Giasson</dc:creator>
				<category><![CDATA[irON]]></category>
		<category><![CDATA[Semantic Web]]></category>
		<category><![CDATA[Structured Dynamics]]></category>
		<category><![CDATA[#irJSON]]></category>
		<category><![CDATA[#open semantic framework]]></category>
		<category><![CDATA[#php]]></category>

		<guid isPermaLink="false">http://fgiasson.com/blog/?p=986</guid>
		<description><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=commON and irJSON PHP parsers released&amp;rft.aulast=Giasson&amp;rft.aufirst=Frederick&amp;rft.subject=irON&amp;rft.subject=Semantic Web&amp;rft.subject=Structured Dynamics&amp;rft.source=Frederick Giasson&#8217;s Weblog&amp;rft.date=2009-10-20&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://fgiasson.com/blog/index.php/2009/10/20/common-and-irjson-php-parsers-released/&amp;rft.language=English"></span>
Two days ago we released irON: Instance Record and Object Notation (irON) Specification. irON is a new notation that has been created to describe instance records. irON records can be serialized in 3 different formats: irXML (XML), irJSON (JSON) and commON (CSV: mainly for spreadsheet manipulations). The release of irON has already been covered at [...]]]></description>
			<content:encoded><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=commON and irJSON PHP parsers released&amp;rft.aulast=Giasson&amp;rft.aufirst=Frederick&amp;rft.subject=irON&amp;rft.subject=Semantic Web&amp;rft.subject=Structured Dynamics&amp;rft.source=Frederick Giasson&#8217;s Weblog&amp;rft.date=2009-10-20&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://fgiasson.com/blog/index.php/2009/10/20/common-and-irjson-php-parsers-released/&amp;rft.language=English"></span>
<p><img class="size-full wp-image-988 alignleft" title="iron_logo_235" src="http://fgiasson.com/blog/wp-content/uploads/2009/10/iron_logo_235.png" alt="iron_logo_235" width="99" height="53" />Two days ago <a href="http://structureddynamics.com">we</a> released irON: <a href="http://openstructs.org/iron/iron-specification">Instance Record and Object Notation (irON) Specification</a>. irON is a new notation that has been created to describe instance records. irON records can be serialized in 3 different formats: <a href="http://openstructs.org/iron/iron-specification#mozTocId408837">irXML</a> (XML), <a href="http://openstructs.org/iron/iron-specification#mozTocId462570">irJSON</a> (JSON) and <a href="http://openstructs.org/iron/iron-specification#mozTocId603499">commON</a> (CSV: mainly for spreadsheet manipulations).</p>
<p>The release of irON has already been covered at length on <a href="http://www.mkbergman.com/838/iron-semantic-web-for-mere-mortals/">Mike&#8217;s blog</a> and in <a href="http://structureddynamics.com/pr20091018.html">Structure Dynamics&#8217;s press room</a>; so I won&#8217;t talk more about it here.</p>
<h3>irON Parsers</h3>
<p>What I am happy to release today are the first two parsers that can be used to parse and validate irON datasets of instance records. The first two parsers that have been developed so far are the ones for irJSON and commON. Each parser has been developed in PHP and is available under the <a href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache 2 licence</a>. Now, lets take a look at each of them</p>
<h3>irJSON Parser</h3>
<p style="text-align: left;">The irJSON parser package can be <a href="http://code.google.com/p/iron-notation/downloads/list">downloaded here</a>. Additionally, the source code can be <a href="http://code.google.com/p/iron-notation/source/browse/#svn/trunk/irJSON">browsed here</a>.</p>
<p>First of all, to understand the code, you have to understand the <a href="http://openstructs.org/iron/iron-specification#mozTocId462570">specification of the irJSON serialization</a>.</p>
<p>The irON parser package is everything you need to test and use the parser. The package is composed of the following files:</p>
<ul>
<li>test.php &#8211; If you want to quick-start with      this package, just run this test.php script and you will have an idea of      what it can do for you. This script just runs the parser over a irJSON test      file, and shows you some validation errors along with the internal parsed      structure of the file. From there, you can simply use the irJSONParser      class, with the structure that is returned to do whatever is needed for      you: adding the information in you database, converting the data to      another format, etc.</li>
<li>irJSONParser.php &#8211; This is the irJSON      parser class. It parses the irJSON file and populates its internal      structure that is composed of instances of the classes below.</li>
<li>Dataset.php &#8211; This      class defines a Dataset records with all its attributes. It is the object      that the developed has to manipulate that comes from the parser.</li>
<li>InstanceRecord.php &#8211; This class defines an      Instance Records with all its attributes. It is the object that the      developed has to manipulate that comes from the parser.</li>
<li>StructureSchema.php &#8211; This class defines a      Structure Schema records with all its attributes. It is the object that      the developed has to manipulate that comes from the parser.</li>
<li>LinkageSchema.php &#8211;      This class defines a Linkage Schema records with all its attributes. It is      the object that the developed has to manipulate that comes from the      parser.</li>
</ul>
<p>The irJSON parser also validates the incoming irJSON files according to these three levels of validation:</p>
<ol>
<li>JSON well-formedness validation      &#8211; The first validation test occurs on the JSON serialization itself. A      JSON file has to be a well formed in order to be processed. An error at      this level will raise an error to the user.</li>
<li>irJSON well-formedness validation &#8211; Once      JSON is parsed and well formed, the parser make sure that the file is      irJSON well-formed. If it is not well formed according to the irJSON spec,      an error will be raised to the user.</li>
<li>Structure Schema validation &#8211; The last      validation that occurs is between instance records, and their related      (if available) Structure Schema. If a validation error happens at this      level, a notice will be raised to the user.</li>
</ol>
<p>You can experiment with some of these validation errors and notices by running the test.php script in the package.</p>
<p>With this package, developers can already start to parse irJSON files and to integrate them with some of their prototype projects.</p>
<h3>commON Parser</h3>
<p>The commON parser package can be <a href="http://code.google.com/p/iron-notation/downloads/list">downloaded here</a>. Additionally, the source code can be <a href="http://code.google.com/p/iron-notation/source/browse/#svn/trunk/commON">browsed here</a>.</p>
<p>To understand the code, you have to understand the <a href="http://openstructs.org/iron/iron-specification#mozTocId603499">specification of the commON serialization</a>.</p>
<p>The commON parser package is everything you need to test the parser. The package is composed of the following files:</p>
<ul>
<li>test.php      &#8211; If you want to quick-start with this package, just run this test.php      script and you will have an idea of what it can do for you. This script      just run the parser over a file, and shows you some validation errors      along with the internal parsed structure of the file. From there, you can      simply use the CommonParser class, with the structure that is returned to      do whatever is needed for you: adding the information in you database,      converting the data to another format, etc.</li>
<li>CommonParser.php      &#8211; This is the commON parser class. It parses the commON file and populates      its internal structure that is described in the code. the parser.</li>
</ul>
<p>The commON parser also validates the incoming commON files according to these two levels:</p>
<ol>
<li>CSV      well-formedness validation &#8211; The first validation test occurs on the <a href="http://www.rfc-editor.org/rfc/rfc4180.txt">CSV</a> serialization itself. A CSV file has to be a well formed in order to be      processed. An error at this level will raise an error to the user.</li>
<li>commON      well-formedness validation &#8211; Once CSV is parsed and well formed, the      parser make sure that the file is CSV well-formed. If it is not well      formed according to the CSV RFC, an error will be raised to the user.</li>
</ol>
<p>You can experiment some of these validation errors and notices by running the test.php script in the package.</p>
<p>With this package, developers can already start to parsing commON files and to integrate them with some prototypes of their projects.</p>
<p>The commON parser is less advanced than the irJSON one. For example, the implementation of the &#8220;dataset&#8221; and the &#8220;schema&#8221; processor keywords are not yet done. Other keywords haven&#8217;t (yet) been integrated too. Take a look at the source code to know what is currently missing.</p>
<p>In any case, a lot of things can currently be done with this parser. We will publish specific commON usage use-cases in the coming weeks that will shows people are we are using commON internally and how we will expect our customers to use it to create and maintain different smaller datasets.</p>
<h3><strong>Conclusion</strong></h3>
<p>These are the first versions of the irJSON and commON parsers. We have to continue to development to make them perfectly reflecting the current and future irON specification. We yet have to write the irXML parser too.</p>
<p>I would encourage reporting any issues with these parsers, or any enhancement suggestions, <a href="http://code.google.com/p/iron-notation/issues/list">on this issue tracked</a>.</p>
<p>All discussions regarding these parsers and the irON specification document should happen on the <a href="http://groups.google.com/group/iron-notation?pli=1">irON group mailing list here</a>.</p>
<p>Finally, another step for us will be to embed these parsers in converter web services for <a href="http://openstructs.org/structwsf/">structWSF</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://fgiasson.com/blog/index.php/2009/10/20/common-and-irjson-php-parsers-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

