<?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>Open Data Protocol &#124; OData &#187; Blog</title>
	<atom:link href="http://www.odata.org/blog/feed" rel="self" type="application/rss+xml" />
	<link>http://www.odata.org</link>
	<description>released under the  Open Specification Promise to allow anyone to freely interoperate with OData implementations.</description>
	<lastBuildDate>Mon, 10 Jun 2013 16:37:51 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>OData Version 4.0 enters 30-Day Public Review</title>
		<link>http://www.odata.org/2013/05/odata-version-4-0-enters-30-day-public-review/</link>
		<comments>http://www.odata.org/2013/05/odata-version-4-0-enters-30-day-public-review/#comments</comments>
		<pubDate>Fri, 03 May 2013 16:57:23 +0000</pubDate>
		<dc:creator>mikep</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://msopentech.azurewebsites.net/odataorg/?p=5493</guid>
		<description><![CDATA[Last Friday the OASIS OData Technical Committee voted unanimously to progress the OData Version 4.0 spec to public review. The official announcement was sent out yesterday, kicking off the 30 day review. The announcement includes links to the public review<span class="ellipsis">&#8230;</span> <a href="http://www.odata.org/2013/05/odata-version-4-0-enters-30-day-public-review/"><div class="read-more">Read more &#8250;</div><!-- end of .read-more --></a>]]></description>
				<content:encoded><![CDATA[<p>Last Friday the <a href="http://www.oasis-open.org/committees/odata/"><span style="color: #0000ff;">OASIS OData Technical Committee</span></a> voted unanimously to progress the OData Version 4.0 spec to public review.</p>
<p>The <a href="https://lists.oasis-open.org/archives/odata/201305/msg00091.html"><span style="color: #0000ff;">official announcement</span></a> was sent out yesterday, kicking off the 30 day review. The announcement includes links to the public review documents for the <a href="http://docs.oasis-open.org/odata/odata/v4.0/csprd01/odata-v4.0-csprd01.zip"><span style="color: #0000ff;">Core Protocol</span></a>, <a href="http://docs.oasis-open.org/odata/odata-atom-format/v4.0/csprd01/odata-atom-format-v4.0-csprd01.zip"><span style="color: #0000ff;">Atom</span></a>, and <a href="http://docs.oasis-open.org/odata/odata-json-format/v4.0/csprd01/odata-json-format-v4.0-csprd01.zip"><span style="color: #0000ff;">JSON</span></a> specifications, and instructions for submitting feedback through the <a href="https://www.oasis-open.org/committees/comments/index.php?wg_abbrev=odata"><span style="color: #0000ff;">mailing list</span></a>. Note that all comments submitted to OASIS are subject to the OASIS <a href="http://www.oasis-open.org/who/ipr/feedback_license.pdf"><span style="color: #0000ff;">Feedback License</span></a>.</p>
<p>This is an exciting milestone for OData and we need your help! The public review is your opportunity to provide input into OData version 4.0, so please review the latest documents and send us feedback as soon as possible, but no later than the close of this public review period, June 2, 2013.</p>
<p>Thank you in advance for your feedback!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.odata.org/2013/05/odata-version-4-0-enters-30-day-public-review/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introducing a Capabilities Vocabulary</title>
		<link>http://www.odata.org/2013/01/introducing-a-capabilities-vocabulary/</link>
		<comments>http://www.odata.org/2013/01/introducing-a-capabilities-vocabulary/#comments</comments>
		<pubDate>Fri, 11 Jan 2013 22:03:10 +0000</pubDate>
		<dc:creator>Microsoft Open Technologies Inc.</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://odata/?p=267</guid>
		<description><![CDATA[As OData becomes richer, individual services may support a range of capabilities beyond a core basis of OData functionality. Even within V1 functionality different services may support different sets of functionality, for example updatability. Generic consumers that want to adapt<span class="ellipsis">&#8230;</span> <a href="http://www.odata.org/2013/01/introducing-a-capabilities-vocabulary/"><div class="read-more">Read more &#8250;</div><!-- end of .read-more --></a>]]></description>
				<content:encoded><![CDATA[<p>As OData becomes richer, individual services may support a range of capabilities beyond a core basis of OData functionality. Even within V1 functionality different services may support different sets of functionality, for example updatability. Generic consumers that want to adapt based on service capabilities require a dynamic way of determining those capabilities.</p>
<div>
<p>What follows is a proposed Capabilities Vocabulary that aims to provide a way for service authors to describe certain capabilities of an OData Service. We'd love to get your feedback!</p>
<p>-Mike Pizzo</p>
<h1>Design Principles</h1>
<p>There are many trade-offs that go into defining a vocabulary to describe capabilities of a system at varying levels. The following principles were factored in to the design of this vocabulary.</p>
<p><strong><em>Keep it as simple as possible </em></strong></p>
<p>This vocabulary aims to enable expression of most general capabilities without diving into complicated cases. The expectation is that an extension to this vocabulary can be designed to cover more complicated cases.</p>
<p><strong><em>Reasonable defaults </em></strong></p>
<p>Annotations are generally extensions to an OData service. Clients consuming an OData service should be able to continue to consume a service regardless of existence of capabilities annotations. However, existence of these annotations enable clients to understand more about the certain capabilities of a service.</p>
<p>There are some capabilities which are strongly recommended for services to support even though they are optional. Support for $top and $skip is a good example as supporting these query options helps with performance of a service and are essential. Such capabilities are assumed to be default capabilities of an OData service even in the case that a capabilities annotation doesn't exist. Capabilities annotations are mainly expected to be used to explicitly specify that a service doesn't support such capabilities. Capabilities annotations can as well be used to declaratively specify the support of such capabilities.</p>
<p>On the other hand, there are some capabilities that may not be appropriate for a given service (such as updatability), that a particular service many not reasonably be capable of supporting, or that a service may only be capable of supporting in varying degrees. $filter and $orderby may be such examples. This vocabulary aims to define terms to specify support or no support for such capabilities.</p>
<p>In the absence of an annotation, a service is assumed to support the following capabilities:</p>
<ul>
<li>Countability ($count, $inlinecount)</li>
<li>Client pageability ($top, $skip)</li>
<li>Expandability ($expand)</li>
<li>Indexability by key</li>
<li>Batch support ($batch)</li>
<li>Navigability of navigation properties</li>
</ul>
<p>A service is expected to use the following annotations if any of the relevant restrictions apply:</p>
<ul>
<li>Filterability ($filter)</li>
<li>Sortability ($orderby)</li>
<li>Queryability of top level entity sets</li>
<li>Query functions</li>
</ul>
<p>In the absence of an annotation, the client cannot assume that a service supports the following capabilities.</p>
<ul>
<li>Insertability</li>
<li>Updatability</li>
<li>Deletability</li>
</ul>
<p>Assumed defaults notwithstanding, a client should always be prepared for services to fail to support any optional capabilities.</p>
<h1>Namespace</h1>
<p>The namespace of this version of the vocabulary is <em>Org.OData.Capabilities.V1 </em></p>
<h1>Terms</h1>
<h2>InsertRestrictions</h2>
<pre>&lt;ValueTerm Name="InsertRestrictions" Type="Self.InsertRestrictionsType" /&gt;
&lt;ComplexType Name="InsertRestrictionsType"&gt;
&lt;Property Name="Insertable" Type="Edm.Boolean" /&gt;
&lt;Property Name="NonInsertableProperties" Type="Collection(Edm.String)" /&gt;
&lt;Property Name="NonInsertableNavigationProperties" Type="Collection(Edm.String)" /&gt;
&lt;/ComplexType&gt;</pre>
<p>Used to express whether Insert operations are supported for an applicable target.</p>
<p><em>Applicable Targets</em>: EntitySet</p>
<p><em>Default Capability</em>: If the term doesn't exist on an applicable target, it means that insertability of that target is <strong><em>unknown. </em></strong></p>
<div>
<table border="0">
<col />
<col />
<col />
<tbody valign="top">
<tr>
<td valign="middle"><strong>Target</strong></td>
<td valign="middle"><strong>Properties</strong></td>
<td valign="middle"><strong>Meaning</strong></td>
</tr>
<tr>
<td rowspan="3" valign="middle"><strong>EntitySet</strong></td>
<td valign="middle">Insertable</td>
<td valign="middle">If "true", the targeted EntitySet is <strong><em>insertable</em></strong>.If "false", the targeted EntitySet is <strong><em>not insertable</em></strong>.</td>
</tr>
<tr>
<td valign="middle">NonInsertableProperties</td>
<td valign="middle">These properties SHOULD be omitted from POST requests because the server will ignore their values.</td>
</tr>
<tr>
<td valign="middle">NonInsertableNavigationProperties</td>
<td valign="middle">These navigation properties do not allow InsertLink requests.</td>
</tr>
</tbody>
</table>
</div>
<h2>UpdateRestrictions</h2>
<pre>&lt;ValueTerm Name="UpdateRestrictions" Type="Self.UpdateRestrictionsType" /&gt;
&lt;ComplexType Name="UpdateRestrictionsType"&gt;
&lt;Property Name="Updatable" Type="Edm.Boolean" /&gt;
&lt;Property Name="NonUpdatableProperties" Type="Collection(Edm.String)" /&gt;
&lt;Property Name="NonUpdatableNavigationProperties" Type="Collection(Edm.String)" /&gt;
&lt;/ComplexType&gt;</pre>
<p>Used to express whether Update operations are supported for an applicable target.</p>
<p>Applicable Targets: EntitySet</p>
<p><em>Default Capability</em>: If the term doesn't exist on applicable target, it means that updatability of that target is <strong><em>unknown. </em></strong></p>
<div>
<table border="0">
<col />
<col />
<col />
<tbody valign="top">
<tr>
<td valign="middle"><strong>Target</strong></td>
<td valign="middle"><strong>Properties</strong></td>
<td valign="middle"><strong>Meaning</strong></td>
</tr>
<tr>
<td rowspan="3" valign="middle"><strong>EntitySet</strong></td>
<td valign="middle">Updatable</td>
<td valign="middle">If "true", the targeted EntitySet is <strong><em>updatable</em></strong>.If "false", the targeted EntitySet is <strong><em>not updatable</em></strong>.</td>
</tr>
<tr>
<td valign="middle">NonUpdatableProperties</td>
<td valign="middle">These properties SHOULD be omitted from PUT or PATCH requests because the server will ignore their values.These properties do not allow UpdateValue and DeleteValue requests.</td>
</tr>
<tr>
<td valign="middle">NonUpdatableNavigationProperties</td>
<td valign="middle">These navigation properties do not allow UpdateLink requests.</td>
</tr>
</tbody>
</table>
</div>
<h2>DeleteRestrictions</h2>
<pre>&lt;ValueTerm Name="DeleteRestrictions" Type="Self. DeleteRestrictionsType" /&gt;
&lt;ComplexType Name="DeleteRestrictionsType"&gt;
&lt;Property Name="Deletable" Type="Edm.Boolean" /&gt;
&lt;Property Name="NonDeletableNavigationProperties" Type="Collection(Edm.String)" /&gt;
&lt;/ComplexType&gt;</pre>
<p>Used to express whether Delete operations are supported for an applicable target.</p>
<p>Applicable Targets: EntitySet</p>
<p>If the term doesn't exist on applicable target, it means that deletability of that target is <strong><em>unknown. </em></strong></p>
<div>
<table border="0">
<col />
<col />
<col />
<tbody valign="top">
<tr>
<td valign="middle"><strong>Target</strong></td>
<td valign="middle"><strong>Properties</strong></td>
<td valign="middle"><strong>Meaning</strong></td>
</tr>
<tr>
<td rowspan="2" valign="middle"><strong>EntitySet</strong></td>
<td valign="middle">Deletable</td>
<td valign="middle">If "true", the targeted EntitySet is <strong><em>deletable</em></strong>.If "false", the targeted EntitySet is <strong><em>not deletable</em></strong>.</td>
</tr>
<tr>
<td valign="middle">NonDeletableNavigationProperties</td>
<td valign="middle">These navigation properties do not allow DeleteLink requests.</td>
</tr>
</tbody>
</table>
</div>
<h2>Countable</h2>
<pre>&lt;ValueTerm Name="Countable" Type="Edm.Boolean" /&gt;

Used to express whether $count and $inlinecount operations are supported for an applicable target.

Applicable Targets: EntitySet

<em>Default Capability</em>: If the term doesn't exist on applicable target, it means that countability of that target is <strong><em>supported. </em></strong></pre>
<div>
<p><strong>Value</strong><br />
<strong>Meaning</strong></p>
<p>True [Default Value]
$count and $inlinecount is<strong><em> supported</em></strong> for the targeted EntitySet.</p>
<p>$count and $inlinecount is<strong><em> not supported</em></strong> for the targeted EntitySet.</p>
<table border="0">
<col />
<col />
<col />
<tbody>
<tr>
<td valign="middle"><strong>Target</strong></td>
</tr>
<tr>
<td rowspan="2" valign="middle"><strong>EntitySet</strong></td>
<td valign="middle">False</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
</div>
<p>&nbsp;</p>
<h2>Queryable</h2>
<p>&lt;ValueTerm Name="Queryable" Type="Edm.Boolean" /&gt; Used to express whether a set is directly queryable as a top level set. Applicable Targets: EntitySet <em>Default Capability</em>: If the term doesn't exist on an applicable target, it means that the queryability of the target is <strong><em>supported. </em></strong></p>
<div>
<p><strong>Value</strong><br />
<strong>Meaning</strong></p>
<p>True [Default Value]
The targeted EntitySet can be directly be <strong><em>queried</em></strong> as a top level set.</p>
<p>The targeted EntitySet <strong>cannot</strong> be directly <strong><em>queried</em></strong> as a top level set. Members are accessed only through relationships or functions</p>
<table border="0">
<col />
<col />
<col />
<tbody>
<tr>
<td valign="middle"><strong>Target</strong></td>
</tr>
<tr>
<td rowspan="2" valign="middle"><strong>EntitySet</strong></td>
<td valign="middle">False</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
</div>
<p>&nbsp;</p>
<h2>ClientPageable</h2>
<p>&nbsp;</p>
<pre>&lt;ValueTerm Name="ClientPageable" Type="Edm.Boolean" /&gt;</pre>
<p>Used to express whether $top and $skip operations are supported for a navigation property or not.</p>
<p>Applicable Targets: EntitySet</p>
<p><em>Default Capability</em>: If the term doesn't exist on an applicable target, it means that $top and $skip operations are <strong><em>supported.</em></strong></p>
<div>
<table border="0">
<col />
<col />
<col />
<tbody valign="top">
<tr>
<td valign="middle"><strong>Target</strong></td>
<td valign="middle"><strong>Value</strong></td>
<td valign="middle"><strong>Meaning</strong></td>
</tr>
<tr>
<td rowspan="2" valign="middle"><strong>EntitySet</strong></td>
<td valign="middle">True [Default Value]</td>
<td valign="middle">$top and $skip operations are <strong><em>supported</em></strong> for the targeted EntitySet.</td>
</tr>
<tr>
<td valign="middle">False</td>
<td valign="middle">$top and $skip operations are <strong><em>not supported</em></strong> for the targeted EntitySet. If a service doesn't support both $top and $skip, it must specify a value of false.</td>
</tr>
</tbody>
</table>
</div>
<h2>Expandable</h2>
<p>&lt;ValueTerm Name="Expandable" Type="Edm.Boolean" /&gt;</p>
<p>Used to express whether $expand operation is supported for a navigation property or not.</p>
<p>Applicable Targets: Navigation Property</p>
<p><em>Default Capability</em>: If the term doesn't exist on an applicable target, it means that $expand is <strong><em>supported.</em></strong></p>
<div>
<table border="0">
<col />
<col />
<col />
<tbody valign="top">
<tr>
<td valign="middle"><strong>Target</strong></td>
<td valign="middle"><strong>Value</strong></td>
<td valign="middle"><strong>Meaning</strong></td>
</tr>
<tr>
<td rowspan="2" valign="middle"><strong>Navigation Property</strong></td>
<td valign="middle">True [Default Value]</td>
<td valign="middle">$expand operation is <strong><em>supported</em></strong> for the targeted EntitySet.</td>
</tr>
<tr>
<td valign="middle">False</td>
<td valign="middle">$expand operation is <strong><em>not supported</em></strong> for the targeted EntitySet.</td>
</tr>
</tbody>
</table>
</div>
<h2>Navigable</h2>
<p>&lt;ValueTerm Name="Navigable" Type="Edm.Boolean" /&gt;</p>
<p>Used to express whether a navigation property can be part of the resource path in a query expression.</p>
<p>Applicable Targets: Navigation Property</p>
<p><em>Default Capability</em>: If the term doesn't exist on an applicable target, it means that the navigation property is <strong><em>navigable</em></strong> in a query expression.</p>
<div>
<table border="0">
<col />
<col />
<col />
<tbody valign="top">
<tr>
<td valign="middle"><strong>Target</strong></td>
<td valign="middle"><strong>Value</strong></td>
<td valign="middle"><strong>Meaning</strong></td>
</tr>
<tr>
<td rowspan="2" valign="middle"><strong>Navigation Property</strong></td>
<td valign="middle">True [Default Value]</td>
<td valign="middle">Navigation property <strong><em>can be navigated</em></strong> in a query expression.</td>
</tr>
<tr>
<td valign="middle">False</td>
<td valign="middle">Navigation property <strong><em>cannot be navigated</em></strong> in a query expression.</td>
</tr>
</tbody>
</table>
</div>
<h2>IndexableByKey</h2>
<p>&lt;ValueTerm Name="IndexableByKey" Type="Edm.Boolean" /&gt;</p>
<p>Used to express whether entities within an entity set can be indexed by key value(s) according to OData URL convention.</p>
<p>Applicable Targets: EntitySet</p>
<p><em>Default Capability</em>: If the term doesn't exist on an applicable target, it means that indexing by key is <strong><em>supported.</em></strong></p>
<div>
<table border="0">
<col />
<col />
<col />
<tbody valign="top">
<tr>
<td valign="middle"><strong>Target</strong></td>
<td valign="middle"><strong>Value</strong></td>
<td valign="middle"><strong>Meaning</strong></td>
</tr>
<tr>
<td rowspan="2" valign="middle"><strong>EntitySet</strong></td>
<td valign="middle">True [Default Value]</td>
<td valign="middle">Indexing by key is <strong><em>supported</em></strong> within the target EntitySet</td>
</tr>
<tr>
<td valign="middle">False</td>
<td valign="middle">Indexing by key is <strong><em>not supported</em></strong> within the target EntitySet</td>
</tr>
</tbody>
</table>
</div>
<h2>SupportsBatch</h2>
<pre>&lt;ValueTerm Name="SupportsBatch" Type="Edm.Boolean" /&gt;</pre>
<p>Used to express whether an EntityContainer supports batch operations.</p>
<p>Applicable Targets: EntityContainer</p>
<p><em>Default Capability</em>: If the term doesn't exist on an applicable target, it means that $batch is <strong><em>supported.</em></strong></p>
<div>
<table border="0">
<col />
<col />
<col />
<tbody valign="top">
<tr>
<td valign="middle"><strong>Target</strong></td>
<td valign="middle"><strong>Value</strong></td>
<td valign="middle"><strong>Meaning</strong></td>
</tr>
<tr>
<td rowspan="2" valign="middle"><strong>EntityContainer</strong></td>
<td valign="middle">True [Default Value]</td>
<td valign="middle">$batch is <strong><em>supported</em></strong> for the target EntityContainer</td>
</tr>
<tr>
<td valign="middle">False</td>
<td valign="middle">$batch is <strong><em>not supported</em></strong> for the target EntityContainer</td>
</tr>
</tbody>
</table>
</div>
<h2>QueryFunctions</h2>
<pre>&lt;ValueTerm Name="QueryFunctions" Type="Collection(Edm.String)" /&gt;</pre>
<p>Used to express the list of supported query function names.</p>
<p>Applicable Targets: EntityContainer</p>
<p><em>Default Capability</em>: If the term doesn't exist on the applicable target, functions that the service supports are <strong><em>unknown</em></strong>.</p>
<div>
<table border="0">
<col />
<col />
<col />
<tbody valign="top">
<tr>
<td valign="middle"><strong>Target</strong></td>
<td valign="middle"><strong>Value</strong></td>
<td valign="middle"><strong>Meaning</strong></td>
</tr>
<tr>
<td valign="middle"><strong>EntityContainer</strong></td>
<td valign="middle">List of query function names (e.g. length, day, double, isOf)</td>
<td valign="middle">Listed query functions are supported by the service.</td>
</tr>
</tbody>
</table>
</div>
<p>If a certain function name is listed in the annotation, it is expected that any property of the type that is filterable on an entity set can be used as the function's parameter.</p>
<p>&nbsp;</p>
<h2>FilterRestrictions</h2>
<pre>&lt;ValueTerm Name="FilterRestrictions" Type="Self.FilterRestrictionsType" /&gt;
&lt;ComplexType Name="FilterRestrictionsType"&gt;
&lt;Property Name="Filterable" Type="Edm.Boolean" /&gt;
&lt;Property Name="RequiredProperties" Type="Collection(Edm.String)" /&gt;
&lt;Property Name="NonFilterableProperties" Type="Collection(Edm.String)" /&gt;
&lt;/ComplexType&gt;</pre>
<p>Used to express restrictions on $filter support of a service.</p>
<p>Applicable Targets: EntitySet</p>
<p><em>Default Capability</em>: If the term doesn't exist on an EntitySet, it means that <strong><em>$filter is supported</em></strong> on that EntitySet.</p>
<div>
<table border="0">
<col />
<col />
<col />
<tbody valign="top">
<tr>
<td valign="middle"><strong>Target</strong></td>
<td valign="middle"><strong>Properties</strong></td>
<td valign="middle"><strong>Meaning</strong></td>
</tr>
<tr>
<td rowspan="3" valign="middle"><strong>EntitySet</strong></td>
<td valign="middle">Filterable</td>
<td valign="middle">If "true", $filter is supported. If "false" $filter is not supported on any properties. Default value for this property is <strong><em>true.</em></strong></td>
</tr>
<tr>
<td valign="middle">RequiredProperties</td>
<td valign="middle">This collection of property paths must be specified in the $filter clause when enumerating the set. (Properties of derived types are not supported).</td>
</tr>
<tr>
<td valign="middle">NonFilterableProperties</td>
<td valign="middle">This collection of property paths cannot be specified in the $filter clause.If the last path segment is a navigation property, all properties related via that navigation property cannot be specified.</td>
</tr>
</tbody>
</table>
</div>
<p>It is possible to specify various capabilities by annotating with this term and picking values for the parameters. The table below shows some examples.</p>
<div>
<table border="0">
<col />
<col />
<tbody valign="top">
<tr>
<td valign="middle"><strong>Annotation</strong></td>
<td valign="middle"><strong>Meaning</strong></td>
</tr>
<tr>
<td valign="middle"><strong><strong><br />
</strong></strong></p>
<pre>&lt;ValueAnnotation Term="C.FilterRestrictions"&gt;
&lt;Record&gt;
&lt;PropertyValue Name="Filterable" Boolean="False" /&gt;
&lt;/Record&gt;
&lt;/ValueAnnotation&gt;</pre>
</td>
<td valign="middle">The EntitySet is not filterable.</td>
</tr>
<tr>
<td valign="middle"><strong><strong><br />
</strong></strong></p>
<pre>&lt;ValueAnnotation Term="C.FilterRestrictions"&gt;
&lt;Record&gt;</pre>
<p><strong><strong><br />
</strong></strong></p>
<pre>&lt;PropertyValue Name="Filterable" Boolean="True" /&gt;
&lt;/Record&gt;</pre>
<p><strong><strong><br />
</strong></strong></p>
<pre>&lt;/ValueAnnotation&gt;</pre>
</td>
<td valign="middle">The entity set is filterable and all properties of all types can be used in $filter expression. This is the same as not including an annotation.</td>
</tr>
<tr>
<td valign="middle"><strong><strong><br />
</strong></strong></p>
<pre>&lt;ValueAnnotation Term="C.FilterRestrictions"&gt;
&lt;Record&gt;
&lt;PropertyValue Name="RequiredProperties"&gt;
&lt;Collection&gt;
&lt;String&gt;Prop1&lt;/String&gt;
&lt;String&gt;Prop2&lt;/String&gt;
&lt;/Collection&gt;</pre>
<p><strong><strong><br />
</strong></strong></p>
<pre>&lt;/PropertyValue&gt;</pre>
<p><strong><strong><br />
</strong></strong></p>
<pre>&lt;/Record&gt;</pre>
<p><strong><strong><br />
</strong></strong></p>
<pre>&lt;/ValueAnnotation&gt;</pre>
</td>
<td valign="middle">The entity set is filterable and Prop1 and Prop2 of the type must be used in the $filter expression</td>
</tr>
<tr>
<td valign="middle"><strong><strong><br />
</strong></strong></p>
<pre>&lt;ValueAnnotation Term="C.FilterRestrictions"&gt;
&lt;Record&gt;
&lt;PropertyValue Name="NonFilterableProperties"&gt;
&lt;Collection&gt;
&lt;String&gt;Prop3&lt;/String&gt;
&lt;String&gt;Prop4&lt;/String&gt;
&lt;String&gt;NavProp5/Prop6&lt;/String&gt;
&lt;String&gt;NavProp7&lt;/String&gt;
&lt;/Collection&gt;
&lt;/PropertyValue&gt;
&lt;/Record&gt;
&lt;/ValueAnnotation&gt;</pre>
</td>
<td valign="middle">The entity set is filterable but Prop3 and Prop4 of the type cannot be used in the $filter expression, as well as Prop6 of the type related via NavProp5 and all properties of the type related via NavProp7. All other properties can be used.</td>
</tr>
<tr>
<td valign="middle"><strong><strong><br />
</strong></strong></p>
<pre>&lt;ValueAnnotation Term="C.FilterRestrictions"&gt;
&lt;Record&gt;
&lt;PropertyValue Name="RequiredProperties"&gt;
&lt;Collection&gt;
&lt;String&gt;Prop1&lt;/String&gt;
&lt;String&gt;Prop2&lt;/String&gt;
&lt;/Collection&gt;
&lt;/PropertyValue&gt;</pre>
<p><strong><strong><br />
</strong></strong></p>
<pre>&lt;PropertyValue Name="NonFilterableProperties"&gt;
&lt;Collection&gt;
&lt;String&gt;Prop3&lt;/String&gt;
&lt;String&gt;Prop4&lt;/String&gt;
&lt;/Collection&gt;
&lt;/PropertyValue&gt;
&lt;/Record&gt;
&lt;/ValueAnnotation&gt;</pre>
</td>
<td valign="middle">The entity set is filterable and Prop1 and Prop2 properties of the type must be used in the $filter. However, Prop3 and Prop4 of the type cannot be used in a $filter expression.</td>
</tr>
</tbody>
</table>
</div>
<h2>SortRestrictions</h2>
<pre>&lt;ValueTerm Name="SortRestrictions" Type="Self.SortRestrictionsType" /&gt;
&lt;ComplexType Name="SortRestrictionsType"&gt;
&lt;Property Name="Sortable" Type="Edm.Boolean" /&gt;
&lt;Property Name="AscendingOnlyProperties" Type="Collection(Edm.String)" /&gt;
&lt;Property Name="DescendingOnlyProperties" Type="Collection(Edm.String)" /&gt;
&lt;Property Name="UnsortableProperties" Type="Collection(Edm.String)" /&gt;
&lt;/ComplexType&gt;</pre>
<p>Used to express restrictions on sortability of an EntitySet.</p>
<p>Applicable Targets: EntitySet</p>
<p><em>Default Capability</em>: If the term doesn't exist on an EntitySet, it means that EntitySet is <strong><em>sortable in both directions</em></strong> on all properties.</p>
<div>
<table border="0">
<col />
<col />
<col />
<tbody valign="top">
<tr>
<td valign="middle"><strong>Target</strong></td>
<td valign="middle"><strong>Properties</strong></td>
<td valign="middle"><strong>Meaning</strong></td>
</tr>
<tr>
<td rowspan="4" valign="middle"><strong>EntitySet</strong></td>
<td valign="middle">Sortable</td>
<td valign="middle">If "true", $orderby is supported. If "false" $orderby is not supported on any properties of the EntitySet. Default value for this property is <strong><em>true.</em></strong></td>
</tr>
<tr>
<td valign="middle">AscendingOnlyProperties</td>
<td valign="middle">Properties specified in this collection can only be used for sorting in Ascending order</td>
</tr>
<tr>
<td valign="middle">DescendingOnlyProperties</td>
<td valign="middle">Properties specified in this collection can only be used for sorting in Descending order</td>
</tr>
<tr>
<td valign="middle">UnsortableProperties</td>
<td valign="middle">Properties specified in this collection cannot be used for sorting</td>
</tr>
</tbody>
</table>
</div>
<p>Various restrictions can be specified using the combination of term's properties similar to FilterRestrictions.</p>
<h1>Formal CSDL Definition</h1>
<pre>&lt;Schema Namespace="Org.OData.Capabilities.V1" xmlns="http://schemas.microsoft.com/ado/2009/11/edm" Alias="Self"&gt;

&lt;ValueTerm Name="InsertRestrictions" Type="Self.InsertRestrictionsType" /&gt;

&lt;ValueTerm Name="UpdateRestrictions" Type="Self.UpdateRestrictionsType" /&gt;

&lt;ValueTerm Name="DeleteRestrictions" Type="Self.DeleteRestrictionsType" /&gt;

&lt;ValueTerm Name="Countable" Type="Edm.Boolean" /&gt;

&lt;ValueTerm Name="Queryable" Type="Edm.Boolean" /&gt;

&lt;ValueTerm Name="ClientPageable" Type="Edm.Boolean" /&gt;

&lt;ValueTerm Name="Expandable" Type="Edm.Boolean" /&gt;

&lt;ValueTerm Name="Navigable" Type="Edm.Boolean" /&gt;

&lt;ValueTerm Name="IndexableByKey" Type="Edm.Boolean" /&gt;

&lt;ValueTerm Name="SupportsBatch" Type="Edm.Boolean" /&gt;

&lt;ValueTerm Name="QueryFunctions" Type="Collection(Edm.String)" /&gt;

&lt;ValueTerm Name="FilterRestrictions" Type="Self.FilterRestrictionsType" /&gt;

&lt;ValueTerm Name="SortRestrictions" Type="Self.SortRestrictionsType" /&gt;

&lt;ComplexType Name="InsertRestrictionsType"&gt;
&lt;Property Name="Insertable" Type="Edm.Boolean" /&gt;
&lt;Property Name="NonInsertableProperties" Type="Collection(Edm.String)" /&gt;
&lt;Property Name="NonInsertableNavigationProperties" Type="Collection(Edm.String)" /&gt;
&lt;/ComplexType&gt;

&lt;ComplexType Name="UpdateRestrictionsType"&gt;
&lt;Property Name="Updatable" Type="Edm.Boolean" /&gt;
&lt;Property Name="NonUpdatableProperties" Type="Collection(Edm.String)" /&gt;
&lt;Property Name="NonUpdatableNavigationProperties" Type="Collection(Edm.String)" /&gt;
&lt;/ComplexType&gt;

&lt;ComplexType Name="DeleteRestrictionsType"&gt;
&lt;Property Name="Deletable" Type="Edm.Boolean" /&gt;
&lt;Property Name="NonDeletableNavigationProperties" Type="Collection(Edm.String)" /&gt;
&lt;/ComplexType&gt;

&lt;ComplexType Name="FilterRestrictionsType"&gt;
&lt;Property Name="Filterable" Type="Edm.Boolean" /&gt;
&lt;Property Name="RequiredProperties" Type="Collection(Edm.String)" /&gt;
&lt;Property Name="NonFilterableProperties" Type="Collection(Edm.String)" /&gt;
&lt;/ComplexType&gt;

&lt;ComplexType Name="SortRestrictionsType"&gt;
&lt;Property Name="Sortable" Type="Edm.Boolean" /&gt;
&lt;Property Name="AscendingOnlyProperties" Type="Collection(Edm.String)" /&gt;
&lt;Property Name="DescendingOnlyProperties" Type="Collection(Edm.String)" /&gt;
&lt;Property Name="UnsortableProperties" Type="Collection(Edm.String)" /&gt;
&lt;/ComplexType&gt;
&lt;/Schema&gt;</pre>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.odata.org/2013/01/introducing-a-capabilities-vocabulary/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OASIS OData Technical Committee Call for Participation</title>
		<link>http://www.odata.org/2012/06/oasis-odata-technical-committee-call-for-participation/</link>
		<comments>http://www.odata.org/2012/06/oasis-odata-technical-committee-call-for-participation/#comments</comments>
		<pubDate>Mon, 11 Jun 2012 22:38:14 +0000</pubDate>
		<dc:creator>Microsoft Open Technologies Inc.</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://odata/?p=280</guid>
		<description><![CDATA[OASIS announced today the Call for Participation for the new OASIS OData Technical Committee tasked with the responsibility of producing the OData Standard. In addition to the core OData version 3.0 protocol found here, the Technical Committee will be defining<span class="ellipsis">&#8230;</span> <a href="http://www.odata.org/2012/06/oasis-odata-technical-committee-call-for-participation/"><div class="read-more">Read more &#8250;</div><!-- end of .read-more --></a>]]></description>
				<content:encoded><![CDATA[<p>OASIS <a href="https://lists.oasis-open.org/archives/odata/201206/msg00000.html">announced</a> today the Call for Participation for the new OASIS OData Technical Committee tasked with the responsibility of producing the OData Standard.</p>
<div>
<p>In addition to the core OData version 3.0 protocol found <a href="http://odata.org/documentation">here</a>, the Technical Committee will be defining some key extensions in the first version of the OASIS Standard:</p>
<p><a href="http://www.oasis-open.org/committees/download.php/46084/ODataExtensionforDataAggregationv1.0.pdf"><b>OData Extensions for Data Aggregation</b> </a>- Business Intelligence provides the ability to get the right set of aggregated results from large data warehouses. OData Extensions for Analytics enable OData to support Business Intelligence by allowing services to model data analytic "cubes" (dimensions, hierarchies, measures) and consumers to query aggregated data.</p>
<p><a href="http://www.oasis-open.org/committees/download.php/46086/ODataExtensionforTemporalDatav1.0.pdf"><b>OData Extensions for Temporal Data</b></a> – Temporal databases support querying data as of a particular time or time range. OData Extensions for Temporal data define temporal annotations, functions and semantics for describing and working with temporal data.</p>
<p><b>Working with </b><a href="http://www.oasis-open.org/committees/download.php/46087/ODataExtensionforXMLDatav1.0.pdf"><b>XML</b></a><b> and </b><a href="http://www.oasis-open.org/committees/download.php/46085/ODataExtensionforJSONDatav1.0.pdf"><b>JSON Data</b></a><b> in OData</b> – Databases often store XML or JSON documents as streams. Extensions for XML and JSON Data define custom functions and annotations to enable those documents to be represented and queried using functions appropriate to each domain (for example, custom XQuery functions for XML).</p>
<p><a href="http://blogs.msdn.com/b/astoriateam/archive/2011/04/13/reference-data-caching-walkthrough.aspx"><b>Retrieving Changes (Deltas) in OData</b></a><b> </b>– Data often changes relatively little over a period of time. In such cases, for example when maintaining a local copy, clients are interested only in retrieving what data has changed, not in re-retrieving the entire set of results. Deltas provide a hypermedia-driven mechanism for clients to request changes (inserts, deletes, updates) to a set of results.</p>
<p>In each of these areas the TC will be balancing the simplicity of OData with the need to do a little more, leveraging built-in OData extensibility mechanisms where possible.</p>
<p>Come join the OASIS Technical Committee and bring your scenarios, requirements, and ideas to help shape these exciting extensions to OData.</p>
<p>-Michael Pizzo</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.odata.org/2012/06/oasis-odata-technical-committee-call-for-participation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using Schema.Org Vocabularies with OData</title>
		<link>http://www.odata.org/2012/06/using-schema-org-vocabularies-with-odata/</link>
		<comments>http://www.odata.org/2012/06/using-schema-org-vocabularies-with-odata/#comments</comments>
		<pubDate>Mon, 11 Jun 2012 22:35:37 +0000</pubDate>
		<dc:creator>Microsoft Open Technologies Inc.</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://odata/?p=277</guid>
		<description><![CDATA[With the introduction of data and metadata annotations to OData version 3.0, developers can now define common vocabularies for things like Sales (with Customers, SalesOrder, Product, etc.), Movies (with Title, Actor, Director, ....), Calendars (with Event, Venue, …), etc. Of<span class="ellipsis">&#8230;</span> <a href="http://www.odata.org/2012/06/using-schema-org-vocabularies-with-odata/"><div class="read-more">Read more &#8250;</div><!-- end of .read-more --></a>]]></description>
				<content:encoded><![CDATA[<div>
<p>With the introduction of data and metadata annotations to OData version 3.0, developers can now define common vocabularies for things like Sales (with Customers, SalesOrder, Product, etc.), Movies (with Title, Actor, Director, ....), Calendars (with Event, Venue, …), etc. Of course, such vocabularies are only useful to the extent that they are shared across a broad range of clients and services.</p>
<p>Over the past  year, <a href="http://schema.org/">schema.org</a> has been defining common schemas to make it easier for search engines to find and understand data on the web. Whenever we talk about shared Vocabularies in OData we inevitably get asked about the relationship of common ontologies expressed through OData Vocabularies to the work going on in schema.org.</p>
<p>I am happy to share that, through ongoing discussions with the members of schema.org, we have agreed that defining common OData Vocabulary encodings of the schema.org schemas is a benefit to both technologies. Sharing a common vocabulary even across different encodings like OData, RDFa 1.1, and Microdata, facilitates a common understanding and even possible transformation of data across those encodings. Toward that end we have jointly posted a <a href="http://www.w3.org/wiki/File:ODataVocabulariesandSchemaorg.docx.pdf">discussion paper</a> on the <a href="http://www.w3.org/wiki/WebSchemas/SchemaDotOrgOData">Web Schemas wiki</a> on the use of schema.org schemas within OData.</p>
<p>From Dan Brickley's blog post on new developments around schema.org:</p>
<p>"We are also pleased to announce today a discussion paper on the use of OData and Schema.org, posted in the Web Schemas wiki. OData defines a RESTful interface for working with data on the Web. The newest version of OData allows service developers and third parties to annotate data or metadata exposed by an OData Service. Defining common OData Vocabulary encodings of the schema.org schemas facilitates the understanding and even transformation of data across these different encodings."</p>
<p>Feel free to add comments to Dan's <a href="http://blog.schema.org/2012/06/semtech-rdfa-microdata-and-more.html">post</a>, or send us feedback on the <a href="http://www.odata.org/mailing-list">odata.org mailing</a> list.</p>
<p>Exciting times for OData!</p>
<p>-Mike</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.odata.org/2012/06/using-schema-org-vocabularies-with-odata/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OData submitted to OASIS for standardization</title>
		<link>http://www.odata.org/2012/05/odata-submitted-to-oasis-for-standardization/</link>
		<comments>http://www.odata.org/2012/05/odata-submitted-to-oasis-for-standardization/#comments</comments>
		<pubDate>Thu, 24 May 2012 22:39:35 +0000</pubDate>
		<dc:creator>Microsoft Open Technologies Inc.</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://odata/?p=282</guid>
		<description><![CDATA[I’m happy to announce that Citrix, IBM, Microsoft, Progress Software, SAP and WSO2 are jointly submitting a proposal for the standardization of OData to OASIS. While the OASIS OData Technical Committee will standardize OData, the great collaboration will continue in<span class="ellipsis">&#8230;</span> <a href="http://www.odata.org/2012/05/odata-submitted-to-oasis-for-standardization/"><div class="read-more">Read more &#8250;</div><!-- end of .read-more --></a>]]></description>
				<content:encoded><![CDATA[<div>
<p>I’m happy to announce that Citrix, IBM, Microsoft, Progress Software, SAP and WSO2 are <a href="http://www.microsoft.com/en-us/news/press/2012/may12/05-24ODataPR.aspx" target="_blank">jointly submitting a proposal</a> for the <a href="http://lists.oasis-open.org/archives/oasis-charter-discuss/201205/msg00000.html" target="_blank">standardization of OData to OASIS</a>.</p>
<p>While the OASIS OData Technical Committee will standardize OData, the great collaboration will continue in the odata.org community to grow the library of producers and consumers and, share implementation and Interop experiences, etc.</p>
<p>The starting point for the proposal is the current OData v3 specification plus a number of proposed extensions that use the protocol extensibility points to add functionality without having to increase the footprint of the core specification.</p>
<p>We often have discussions within the team, with developers out there and the community about what OData can and cannot do and whether we should add this or that feature. In that context we always come back to the same few principles that guide the design of OData: the main value of this technology is not any particular design choice but the fact that enough people agree to the same pattern, thus removing friction from sharing data across independent producers and consumers. For that to work the protocol must remain simple for simple cases, cover more sophisticated cases reasonably well and avoid inventing stuff as much as possible.</p>
<p>With interoperability front and center in OData we saw more and more technology stacks that started to work with it. Now there are a number of companies that use OData in their products to ensure the data they manage is easily accessible beyond the boundaries of their applications. Many of these companies regularly collaborate on the ongoing design effort for OData. While so far we’ve run the OData design process as transparently as we could (sharing designs, taking feedback through the odata.org blog and distribution list, etc.), we are at a point where the level of adoption and the scale at which organizations are betting on OData require a more formal commitment to shared ownership of the design of this protocol.</p>
<p>We have a good amount of work ahead of us in the OASIS TC, but this is the first step. We’ll keep posting to this blog with updates as things progress.</p>
<p>We encourage others to get involved to learn more about the protocol and design decisions that were made in developing the protocol. Go to odata.org, check out the OData blog and join the OData mailing list (the instructions are on odata.org).  Join the OASIS OData TC and help us standardize the protocol!</p>
<p>We’re happy to see OData take this important step on the journey towards standardization. Thanks to all the folks out there that helped get OData this far.</p>
<p>-pablo</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.odata.org/2012/05/odata-submitted-to-oasis-for-standardization/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OData V3 demo services</title>
		<link>http://www.odata.org/2012/05/odata-v3-demo-services/</link>
		<comments>http://www.odata.org/2012/05/odata-v3-demo-services/#comments</comments>
		<pubDate>Fri, 11 May 2012 22:40:36 +0000</pubDate>
		<dc:creator>Microsoft Open Technologies Inc.</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://odata/?p=284</guid>
		<description><![CDATA[In April we shipped the OData version 3 along with the 5.0 release of WCF Data Services. To make it easier for you discover the new features and for us to show you some of them, we’re now making available<span class="ellipsis">&#8230;</span> <a href="http://www.odata.org/2012/05/odata-v3-demo-services/"><div class="read-more">Read more &#8250;</div><!-- end of .read-more --></a>]]></description>
				<content:encoded><![CDATA[<div>
<p>In April we shipped the OData version 3 along with the <a href="http://blogs.msdn.com/b/astoriateam/archive/2012/04/09/wcf-data-services-5-0-rtm-release.aspx">5.0 release of WCF Data Services</a>. To make it easier for you discover the new features and for us to show you some of them, we’re now making available the OData demo services which use the OData V3 protocol.</p>
<p>The new services are hosted side by side with old demo services which we didn’t change. The new demo services are using the <a href="http://blogs.msdn.com/b/astoriateam/archive/2012/05/07/wcf-data-services-now-with-more-releases.aspx">WCF Data Services 5.0.1-rc</a> release currently, and we will update them to the newer version once it becomes available.</p>
<p>There are 3 demo services:</p>
<p>The read-only Demo service, which has an updated model to use some V3 features as described below, is hosted here:</p>
<p><a title="http://services.odata.org/V3/OData/OData.svc/" href="http://services.odata.org/V3/OData/OData.svc/">http://services.odata.org/V3/OData/OData.svc/</a></p>
<p>The read-write Demo service, which is the exact same model as the read-only Demo service including new V3 features, is hosted here:</p>
<p><a title="http://services.odata.org/V3/(S(readwrite))/OData/OData.svc/" href="http://services.odata.org/V3/%28S%28readwrite%29%29/OData/OData.svc/">http://services.odata.org/V3/(S(readwrite))/OData/OData.svc/</a></p>
<p>The read-only Northwind service, which is the exact same model as the existing Northwind service, is hosted here:</p>
<p><a title="http://services.odata.org/V3/Northwind/Northwind.svc/" href="http://services.odata.org/V3/Northwind/Northwind.svc/">http://services.odata.org/V3/Northwind/Northwind.svc/</a></p>
<p>Here are the V3 features we’ve enabled so far.</p>
<h3>Actions</h3>
<p>The Product type has a Discount action on it which takes a single parameter discountPercentage of type Edm.Int32. The action takes the Price of the product it’s applied to and decreases it by the percentage specified by the parameter. For example:</p>
<p><span style="font-family: Courier New">  GET </span><a href="http://services.odata.org/V3/%28S%28plcxuejnllfvrrecpvqbehxz%29%29/OData/OData.svc/Products%281%29"><span style="font-family: Courier New">http://services.odata.org/V3/(S(plcxuejnllfvrrecpvqbehxz))/OData/OData.svc/Products(1)</span></a></p>
<p>Will return a product with Price: 3.5</p>
<blockquote><p><span style="font-family: Courier New">  POST </span><a href="http://services.odata.org/V3/%28S%28plcxuejnllfvrrecpvqbehxz%29%29/OData/OData.svc/Products%281%29/Discount" class="broken_link"><span style="font-family: Courier New">http://services.odata.org/V3/(S(plcxuejnllfvrrecpvqbehxz))/OData/OData.svc/Products(1)/Discount</span></a><span style="font-family: Courier New"> HTTP/1.1<br />
Content-Type: application/json;odata=verbose</span></p>
<p>{ "discountPercentage": 25 }</p></blockquote>
<p>The response should be 204 No Content.</p>
<p>And now again</p>
<p><span style="font-family: Courier New">  GET </span><a href="http://services.odata.org/V3/%28S%28plcxuejnllfvrrecpvqbehxz%29%29/OData/OData.svc/Products%281%29"><span style="font-family: Courier New">http://services.odata.org/V3/(S(plcxuejnllfvrrecpvqbehxz))/OData/OData.svc/Products(1)</span></a></p>
<p>Returns a product with Price: 2.625</p>
<h3>Spatial</h3>
<p>The Supplier type has a property Location which is of type Edm.GeographyPoint. You can see it here:</p>
<p><a title="http://services.odata.org/V3/OData/OData.svc/Suppliers(0)" href="http://services.odata.org/V3/OData/OData.svc/Suppliers%280%29">http://services.odata.org/V3/OData/OData.svc/Suppliers(0)</a></p>
<h3>Any and All</h3>
<p>The service now supports any and all operators. For example:</p>
<p><a href="http://services.odata.org/V3/OData/OData.svc/Categories?$filter=Products/any%28p:%20p/Rating%20ge%204%29">http://services.odata.org/V3/OData/OData.svc/Categories?$filter=Products/any(p: p/Rating ge 4)</a></p>
<h3>Inheritance support</h3>
<p>You can now address properties on derived types. The demo service doesn’t have a sample property like that yet, but you can try the new URL syntax with type cast anyway:</p>
<p><a title="http://services.odata.org/V3/OData/OData.svc/Products/ODataDemo.Product" href="http://services.odata.org/V3/OData/OData.svc/Products/ODataDemo.Product">http://services.odata.org/V3/OData/OData.svc/Products/ODataDemo.Product</a></p>
<h3>Patch support</h3>
<p>You can send PATCH requests instead of MERGE. The behavior is identical otherwise.</p>
<h3>Prefer header support</h3>
<p>You can specify a Prefer header in create or update requests and ask the server to either omit or include the payload. For example:</p>
<p><span style="font-family: Courier New">  PATCH </span><a href="http://services.odata.org/V3/%28S%28plcxuejnllfvrrecpvqbehxz%29%29/OData/OData.svc/Products%281%29"><span style="font-family: Courier New">http://services.odata.org/V3/(S(plcxuejnllfvrrecpvqbehxz))/OData/OData.svc/Products(1)</span></a><span style="font-family: Courier New"> HTTP/1.1<br />
Accept: application/json;odata=verbose<br />
Content-Type: application/json;odata=verbose<br />
Prefer: return-content<br />
DataServiceVersion: 3.0;</span></p>
<p><span style="font-family: Courier New">  { "Price": "3.5" }</span></p>
<p>Responds with (trimmed for readability):</p>
<p><span style="font-family: Courier New">  HTTP/1.1 200 OK<br />
Content-Type: application/json;odata=verbose;charset=utf-8<br />
Preference-Applied: return-content<br />
DataServiceVersion: 3.0;</span></p>
<p>{"d":{<br />
"__metadata":{…},<br />
…<br />
"ID":1,<br />
"Name":"Milk",<br />
"Description":"Low fat milk",<br />
"ReleaseDate":"1995-10-01T00:00:00",<br />
"DiscontinuedDate":null,<br />
"Rating":3,<br />
"Price":"3.5"<br />
}}</p>
<h3>Association links</h3>
<p>Each navigation link can now also specify an association link which is the URL to manipulate the association with. For example this is a part of the ATOM payload for ~/Product(1):</p>
<p><span style="font-family: Courier New">&lt;link<br />
rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Category"<br />
type="application/atom+xml;type=entry"<br />
title="Category"<br />
href="Products(1)/Category" /&gt;<br />
&lt;link<br />
rel="http://schemas.microsoft.com/ado/2007/08/dataservices/relatedlinks/Category"<br />
type="application/xml"<br />
title="Category"<br />
href="Products(1)/$links/Category" /&gt;</span></p>
<p>We are working on adding more V3 features to the Demo service and we’ll be updating the service as we have them available.</p>
<p>Vitek Karas<br />
Sr. Software Development Engineer, OData, Microsoft.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.odata.org/2012/05/odata-v3-demo-services/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JSON Light Sample Payloads</title>
		<link>http://www.odata.org/2012/04/json-light-sample-payloads/</link>
		<comments>http://www.odata.org/2012/04/json-light-sample-payloads/#comments</comments>
		<pubDate>Tue, 17 Apr 2012 22:42:23 +0000</pubDate>
		<dc:creator>Microsoft Open Technologies Inc.</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://odata/?p=286</guid>
		<description><![CDATA[We recently put together a document that contains some of our thinking about JSON light as well as a whole slew of sample payloads. We would love to hear any feedback you have on the format; you can comment in<span class="ellipsis">&#8230;</span> <a href="http://www.odata.org/2012/04/json-light-sample-payloads/"><div class="read-more">Read more &#8250;</div><!-- end of .read-more --></a>]]></description>
				<content:encoded><![CDATA[<div>
<p>We recently put together a document that contains some of our thinking about JSON light as well as a whole slew of sample payloads. We would love to hear any feedback you have on the format; you can comment in the accompanying OneNote.</p>
<p>We will be accepting public feedback on JSON light until May 4, 2012. We will also provide a preview release of the JSON light bits via NuGet for interested parties.</p>
<p>JSON light at-a-glance: <a title="https://skydrive.live.com/redir.aspx?cid=0d23ed2816deea7b&amp;resid=D23ED2816DEEA7B!966&amp;parid=D23ED2816DEEA7B!106&amp;authkey=!AAYCE2RUJccjhHk" href="https://skydrive.live.com/redir.aspx?cid=0d23ed2816deea7b&amp;resid=D23ED2816DEEA7B%21966&amp;parid=D23ED2816DEEA7B%21106&amp;authkey=%21AAYCE2RUJccjhHk">https://skydrive.live.com/redir.aspx?cid=0d23ed2816deea7b&amp;resid=D23ED2816DEEA7B!966&amp;parid=D23ED2816DEEA7B!106&amp;authkey=!AAYCE2RUJccjhHk</a><br />
Discussion: <a href="https://skydrive.live.com/redir.aspx?cid=0d23ed2816deea7b&amp;page=view&amp;resid=D23ED2816DEEA7B%21967&amp;parid=D23ED2816DEEA7B%21106&amp;authkey=%21ABdrv3heWfQFY4Y">https://skydrive.live.com/redir.aspx?cid=0d23ed2816deea7b&amp;page=view&amp;resid=D23ED2816DEEA7B!967&amp;parid=D23ED2816DEEA7B!106&amp;authkey=!ABdrv3heWfQFY4Y</a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.odata.org/2012/04/json-light-sample-payloads/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OData meetup</title>
		<link>http://www.odata.org/2012/03/odata-meetup/</link>
		<comments>http://www.odata.org/2012/03/odata-meetup/#comments</comments>
		<pubDate>Mon, 26 Mar 2012 22:43:19 +0000</pubDate>
		<dc:creator>Microsoft Open Technologies Inc.</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://odata/?p=288</guid>
		<description><![CDATA[This week we had our first OData meetup hosted by Microsoft. People representing 20+ companies came together to learn from other attendees’ experiences, chatted about everything OData, and enjoyed the food, beverages and awesome weather (no, really!) in Redmond. We<span class="ellipsis">&#8230;</span> <a href="http://www.odata.org/2012/03/odata-meetup/"><div class="read-more">Read more &#8250;</div><!-- end of .read-more --></a>]]></description>
				<content:encoded><![CDATA[<p>This week we had our first OData meetup hosted by Microsoft. People representing 20+ companies came together to learn from other attendees’ experiences, chatted about everything OData, and enjoyed the food, beverages and awesome weather (no, really!) in Redmond.</p>
<p>We had some great presentations</p>
<ul>
<li><b>Mike Pizzo</b> had fun stories on the Evolution of OData. He talked about the <b>open design approach</b> that the OData team adopted from the very beginning and how it helped to bring the community on board. He concluded that OData design has benefited greatly from broad community participation.</li>
<li><b>Pablo Castro</b> and <b>Alex James</b> covered the new features that are coming as part of <b>OData v3</b>. OData v3 has ton of features that augment the RESTful story for OData. Features like vocabularies and functions provide the necessary extension points that enable implementers to go beyond what is offered in the core implementation and still be able to play within the OData ecosystem.</li>
<li><b>Ralf Handl</b> from SAP talked about how OData helped them achieve the vision for <b>‘Open Data’ – Any Environment, Any Platform, Any Experience</b>. In later talks by SAP they showed some of their products that are powered by OData. In addition to the OData feeds they publish, they demonstrated client tools that enable developers to easily consume SAP OData feeds on the platform of their choice.</li>
<li><b>Dana Gutride</b> from Citrix walked through their experience of enabling OData in some of their products. OData’s standards-based approach, capabilities like type safety, and ease of access made it an obvious choice for their product.</li>
<li><b>Webnodes</b> presented how they integrated OData into their CMS system</li>
<li><b>Eas</b><b>t</b><b>banc Technologies </b>talked about their metropolitan transit visualization tool</li>
<li><b>Viecore’s</b> demoed its advanced decision support and control systems for the U.S. military</li>
<li><b>APIgee’s </b>Anant Jhingran gave more of a Zen talk; Anant hit few themes that are worth mentioning
<ul>
<li>If Data isn’t your core business, then you should give it away</li>
<li>Opportunity for OData community is immense – question is whether we’ll grab it</li>
<li>Data as an information halo surrounding core business is the OData opportunity</li>
</ul>
</li>
<li><b>Pablo Castro</b> gave another talk titled ‘OData: The Good, the Bad, and the Ugly’, which focused on what things Microsoft has done right and wrong in implementing their OData stack (beer was served <b><i>during</i></b> this talk to ensure these points do not last long in people’s memory)</li>
</ul>
<p>The first day ended with a delicious dinner at the Spitfire restaurant in Redmond.</p>
<p>On the second day of the meetup we used Open Space format (<a href="http://www.openspaceworld.org/">http://www.openspaceworld.org/</a>) to encourage loosely-structured discussion. Through Arlo Belshee’s awesome coordination, we put together by the end of the first hour an exciting agenda for the rest of the day.</p>
<p>Some of the conversations that happened and themes that emerged:</p>
<ul>
<li>The topic of <b>vocabularies</b> sparked a great discussion, in which we were trying to decide what tools and communications media would best help groups create vocabularies and then advertise them to others. We also talked about whether there were vocabularies that were central enough to warrant definition by the OData community as a whole.</li>
<li><b>SAP</b> led a discussion exploring ways to model <b>Analytical data</b> (cubes) in OData, and meetup attendees had many good suggestions.</li>
<li>There was a lot of talk about <b>open source</b>, ODataLib, and a shared query processor. Some people talked about porting ODataLib to other languages. Others discussed getting improvements folded back into existing projects, such as OData4J. We had several conversations about a query processor, and what form it could take. We even got into some architectural discussion about potential programming APIs.</li>
<li>· We heard repeatedly that there isn’t enough marketing of OData to CIOs and other decision makers, and we discussed different ways to improve the odata.org website to make it more useful for the community.</li>
<li><b>JSON Light</b> came up several times. We kicked the tires around some of the current thinking and explored how that would interact with peoples’ existing implementations.</li>
</ul>
<p>The two days were both educational and fun-filled, and they showed how big the OData community has grown in recent years. There was a strong interest from the attendees to do more of these community-driven events.</p>
<p>Asad Khan</p>
]]></content:encoded>
			<wfw:commentRss>http://www.odata.org/2012/03/odata-meetup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OData Service Validation Tool Update: Ground work for V3 Support</title>
		<link>http://www.odata.org/2012/02/odata-service-validation-tool-update-ground-work-for-v3-support/</link>
		<comments>http://www.odata.org/2012/02/odata-service-validation-tool-update-ground-work-for-v3-support/#comments</comments>
		<pubDate>Tue, 28 Feb 2012 22:44:03 +0000</pubDate>
		<dc:creator>Microsoft Open Technologies Inc.</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://odata/?p=290</guid>
		<description><![CDATA[OData Service Validation Tool  was updated with 5 new rules and the ground work for supporting OData v3 services: 4 new common rules 1 new entry rule Added version annotation to rules to differentiate rules by version Modified the rule<span class="ellipsis">&#8230;</span> <a href="http://www.odata.org/2012/02/odata-service-validation-tool-update-ground-work-for-v3-support/"><div class="read-more">Read more &#8250;</div><!-- end of .read-more --></a>]]></description>
				<content:encoded><![CDATA[<div>
<p><a href="http://validator.odata.org/">OData Service Validation Tool</a>  was updated with 5 new rules and the ground work for supporting OData v3 services:</p>
<ul>
<li>4 new <a href="http://services.odata.org/Validation/RuleSet/Rules?$filter=Target%20eq%20%27Common%27&amp;$orderby=Initial_Release%20desc">common rules</a></li>
<li>1 new <a href="http://services.odata.org/Validation/RuleSet/Rules?$filter=Target%20eq%20%27Entry%27&amp;$orderby=Initial_Release%20desc">entry rule</a></li>
<li>Added version annotation to rules to differentiate rules by version</li>
<li>Modified the rule selection engine to support rule version.</li>
<li>Change rule engine API to support rule versions</li>
<li>Changed database schema to log request and response headers</li>
<li>Added a V3 checkbox for online and offline validation scenarios</li>
</ul>
<p>This update brings the total number of rules in the validation tool to <strong>152.</strong> You can see the list of the active rules <a href="http://services.odata.org/validation/roadmap.htm#rules">here</a> and the list of rules that are under development <a href="http://services.odata.org/Validation/RuleSet/Rules?$filter=Status%20eq%20%27Approved%27">here</a>.</p>
<p>Moreover, with this update the validation tool is positioned to support rules for v3 services for OData V3 payload validation.</p>
<p>Keep on  validating and let us know what you think either on the <a href="http://odata.org/mailing-list">mailing list</a> or on the <a href="http://odatavalidator.codeplex.com/discussions">discussions page</a> on the Codeplex site.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.odata.org/2012/02/odata-service-validation-tool-update-ground-work-for-v3-support/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OData Service Validation Tool Update: 7 new rules</title>
		<link>http://www.odata.org/2012/01/odata-service-validation-tool-update-7-new-rules/</link>
		<comments>http://www.odata.org/2012/01/odata-service-validation-tool-update-7-new-rules/#comments</comments>
		<pubDate>Mon, 30 Jan 2012 22:45:02 +0000</pubDate>
		<dc:creator>Microsoft Open Technologies Inc.</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://odata/?p=292</guid>
		<description><![CDATA[OData Service Validation Tool was updated with 7 more new rules: 6 new common rules 1 new entry rule This rule update brings the total number of rules in the validation tool to 147. You can see the list of<span class="ellipsis">&#8230;</span> <a href="http://www.odata.org/2012/01/odata-service-validation-tool-update-7-new-rules/"><div class="read-more">Read more &#8250;</div><!-- end of .read-more --></a>]]></description>
				<content:encoded><![CDATA[<p><a href="http://validator.odata.org/">OData Service Validation Tool</a> was updated with 7 more new rules:</p>
<ul>
<li>6 new <a href="http://services.odata.org/Validation/RuleSet/Rules?$filter=Target%20eq%20%27Common%27&amp;$orderby=Initial_Release%20desc">common rules</a></li>
<li>1 new <a href="http://services.odata.org/Validation/RuleSet/Rules?$filter=Target%20eq%20%27Entry%27&amp;$orderby=Initial_Release%20desc">entry rule</a></li>
</ul>
<p>This rule update brings the total number of rules in the validation tool to <strong>147. </strong>You can see the list of the active rules <a href="http://services.odata.org/validation/roadmap.htm#rules">here</a> and the list of rules that are under development <a href="http://services.odata.org/Validation/RuleSet/Rules?$filter=Status%20eq%20%27Approved%27">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.odata.org/2012/01/odata-service-validation-tool-update-7-new-rules/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
