W3C

پروتکل SPARQL برای RDF

توصیه W3C در 15 ژانویه 2008

این نسخه:
http://www.w3.org/TR/2008/REC-rdf-sparql-protocol-20080115
آخرین نسخه منتشر شده:
http://www.w3.org/TR/rdf-sparql-protocol
نگارش قبل:
http://www.w3.org/TR/2007/PR-rdf-sparql-protocol-20071112
ویراستارها:
کندل گرنت کلارک، <Clark & Parsia LLC ،<kendall@monkeyfist.com 
لی فیجنبان، <lee@thefigtrees.net>، کارشناس دعوت شده
الیاس توریس، <IBM Corporation ،<eliast@us.ibm.com 

لطفا برای این سند به اشتباهات مراجعه نمایید، که می تواند شامل برخی از اشکالات اساسی باشد.

همچنین ترجمه ها را ببینید.

كليه ‌ی حقوق چاپ و نشر 2006-2007 W3C كه شامل تعهدات، علامت تجاری و استفاده از سند می‌ باشد، برای (MIT, ERCIM, Keio) محفوظ است.


چکیده

پروتکل SPARQL و زبان پرس و جوی RDFا (SPARQL) یک زبان پرس و جو و پروتکلی برای RDF است. این سند پروتکل SPARQL را مشخص می کند؛ که جهت توصیف وسیله ای برای انتقال جستجوهای SPARQL به سرویس پردازش جستجو و برگشت نتایج جستجو به آنچه درخواست شده، از WSDL 2.0 استفاده می نماید. این پروتکل توسط  کار گروه دسترسی داده های W3C RDFا (DAWG) توسعه داده شده بود،  بخشی از فعالیت وب معنایی بطوریکه در دستور فعالیت تشریح شده است.

وضعیت این سند

این بخش وضعیت این سند را در هنگام انتشارش، توصیف می کند. اسناد دیگر ممکن است جانشین این سند شوند. لیستی از انتشارات موجود W3C و آخرین بازبینی این گزارش تخصصی می تواند در فهرست گزارشهای تخصصی واقع در http://www.w3.org/TR یافت شود.

این یک توصیه W3C است.

این سند توسط اعضای W3C، توسط توسعه دهندگان نرم افزار و توسط گروههای دیگر W3C و نیز توسط اشخاص علاقه مند و ذینفع مورد بازبینی قرار گرفته است، و توسط مدیریت بعنوان یک توصیه W3C مورد تایید قرار گرفته است. که سندی پایدار است و می تواند بصورت مرجع مهم یا نقل شده از سند دیگر استفاده شده باشد. نقش W3C در ایجاد توصیه در راستای جلب توجه به مشخصات و جهت ترویج توسعه همه جانبه اش می باشد. این کاربرد گرایی و یکپارچگی عملیات را در وب می افزاید.

نکاتی در مورد این سند می بایستی به public-rdf-dawg-comments@w3.org، لیستی از نامه های فرستاده شده به آرشیو عمومی ارسال شده باشد. پرسشها و نکاتی راجع به SPARQL که ربطی به این خصوصیات ندارند، شامل الحاقات و خصیصه هایی هستند که می تواند در لیست ایمیلهای ارسالی به public-sparql-dev@w3.org، (آرشیو عمومی) مورد بحث قرار گرفته باشند.

این سند توسط کار گروه دسترسی داده های RDF ارایه شد، که بخشی از فعالیت وب معنایی W3C می باشد. نشر نخست این سند بعنوان پیش نویس کار در 14 ژانویه 2005 به اتمام رسید و کار گروه دارای شماری از نکات دریافت شده  نشانی داده شده و انتشارهای پس از آن است. در آنجا سرمقاله تغییر یافته پس از توصیه پیشنهاد شده نوامبر 2007 موجود است.

گزارش کاربرد پروتکل SPARQL کار گروه نشان دهنده اهدافی برای کاربردهای قابلیت عمل بینابینی مجموعه در کاندید توصیه آوریل 2006 به نتیجه رسیده می باشد.

کار گروه دسترسی داده ها دارای 12 برآمد به تعویق انداخته شده می باشد که شامل توابع جمع شده و یک زبان بهنگام درآوری است.

این سند توسط یک گروه عملیاتی تحت سیاست آشکار 5 فوریه 2004 W3C تهیه شد. W3C یک لیست عمومی از هرگونه آشکارسازهای مجاز در رابطه با قابلیتهای تحویل از گروه ساخته است؛ که آن صفحه همچنین دربردارنده‌ی دستورالعمل ها برای آشکارسازی مجاز است. فردی که دارای شناخت واقعی از حق امتیازی است که فرد بر این باور است که دارای  اداعا(ها)ی ذاتی می باشد بایستی اطلاعات مطابق با قسمت 6 از سیاست آشکار W3C را آشکار سازد.


جدول محتویات

1. مقدمه

این سند (که بخودش به عنوان " پروتکل SPARQL برای RDF" اشاره می نماید) پروتکل SPARQL، وسیله ای از انتقال جستجوهای SPARQL بنابر جستجوی کاربران را به پردازشگر جستجوها توصیف می کند. پروتکل SPARQL جهت سازگاری با زبان پرس و جوی SPARQL برای RDF  طراحی شده است [SPARQL]. پروتکل SPARQL به دو صورت تشریح شده است: نخست، بصورت یک واسط مختصر صرف نظر از هر تحقق محسوس، اجرا یا اتصال به پروتکل دیگری؛ دوم، همچون مقید سازی HTTP و SOAP از این واسط. این سند، بخوبی به اسناد WSDL و طرح W3C XML مرتبط شده است، در درجه نخست برای توسعه دهنده های نرم افزار ذینفع در اجرای سرویس های جستجو و سمت کاربران طراحی شده است.

هنگامی که در این سند از واژه های must, must not, should, should not, may و recommended، و واژه های ظاهر شده بصورت متن پیچیده استفاده می‌شود، آنها بایستی همچون آنچه در RFC2119] RFC 2119] تشریح شده، تفسیر شده باشند.

هنگامی که گزیده های محتویات این سند از دیگر اسناد، شامل واسط های WSDL و طرح XML است، از پیشوندهای فضای نامی و URI های فضای نامی استفاده می‌نماید:

پیشوند URI فضای نامی
st http://www.w3.org/2005/09/sparql-protocol-types/#
xs http://www.w3.org/2001/XMLSchema
vbr http://www.w3.org/2005/sparql-results#
rdf http://www.w3.org/1999/02/22-rdf-syntax-ns#
whttp http://www.w3.org/2006/01/wsdl/http
wsoap http://www.w3.org/2006/01/wsdl/soap
soap http://www.w3.org/2003/05/soap-envelope
wsdlx http://www.w3.org/2005/08/wsdl-extensions
tns http://www.w3.org/2005/08/sparql-protocol-query/#

2. پروتکل SPARQL  

این مجموعه ای از اسنادی است که شامل خصوصیات پروتکل SPARQL می باشند:

 پروتکل SPARQL برای RDF
سند رایجی که خصوصیات اصلی پروتکل SPARQL در زبان خواندنی - انسانی است.
 پروتکل SPARQL توصیف WSDL 2.0
توصیف اصلی پروتکل SPARQL مورد استفاده WSDL 2.0.
انواع پروتکل SPARQL
سند طرح XML که بصورت اساسی انواع استفاده شده در پروتکل SPARQL را تعریف می کند.

محتویات پروتکل SPARQL یک واسط ، SparqlQuery، که در گردش محتویات یک عملیات  query است. پروتکل SPARQL بطور مطلق تشریح شده با WSDL 2.0  [WSDL2] برحسب وب سرویسی که واسط کاربردهایش، انواع، نواقص و عملیات، بخوبی با HTTP و SOAP مقید سازی شده است. یادداشتی که در حین استفاده این سند از   WSDL 2.0 به تشریح پروتکل SPARQL می پردازد، در آن بدون تعهد روی هر بخش از تحقق پذیری جهت هر راهبرد اجرای ویژه ای، شامل استفاده از هر کتابخانهWSDL یا چارچوب زبان برنامه نویسی بهره می گیرد.

2.1 واسط SparqlQuery

2.1.1 عملیات query

SparqlQuery تنها واسط متعلق به پروتکل است. آن شامل عملی همچون query است که جهت انتقال یک رشته جستجوی SPARQL استفاده شده و بطور اختیاری، توصیفی از یک مجموعه داده ی RDF را می رساند.

عملیات query بصورت یک نمونه تبادل پیغام In-Out توصیف شده است [WSDL-Adjuncts]. محدودیتهای نمونه تبادل پیغام In-Out بصورت ذیل موجود است:

این نمونه شامل دو پیغام صحیح، بترتیب زیر می باشد:

  1. یک پیغام:

    • بوسیله یک جزء مرجع پیغام واسط متعلق به {message label} نشان داده شده است "In" و {direction} است "in"

    • مطابق برخی گره N دریافت شده است

  2. یک پیغام:

    • بوسیله یک جزء مرجع پیغام واسط متعلق به {message label} نشان داده شده است "Out" و {direction} است "out"

    • فرستاده شده به گره N

این نمونه از دستور استفاده می نماید 2.2.1 پیغام جایگزین های نقص.

این واسط و عملکردش در جزء زیرین  WSDL 2.0 توصیف شده اند (مطابق protocol-query.wsdl که شامل اعلانهای فضای نامی مربوطه می باشد):

<!-- Abstract SparqlQuery Interface -->
<interface name="SparqlQuery" styleDefault="http://www.w3.org/2006/01/wsdl/style/iri">

   <!-- the Interface Faults -->
   <fault name="MalformedQuery" element="st:malformed-query"/>
   <fault name="QueryRequestRefused" element="st:query-request-refused"/>

   <!-- the Interface Operation -->
   <operation name="query" pattern="http://www.w3.org/2006/01/wsdl/in-out">

      <documentation>The operation is used to convey queries and their results from clients to services and back
      again.</documentation>

      <input messageLabel="In" element="st:query-request"/>
      <output messageLabel="Out" element="st:query-result"/>

      <!-- the interface faults are out faults -->
      <outfault ref="tns:MalformedQuery" messageLabel="Out"/>
      <outfault ref="tns:QueryRequestRefused" messageLabel="Out"/>
   </operation>

</interface>

گلچین تکه 1.0 WSDL 2.0

2.1.2 query در پیغام

کاملا، محتویات موجود در پیغام از عملیات query متعلق به SparqlQuery واسطی از یک نوع پیچیده طرح XML است، st:query-request درExcerpt 1.0 ترکیبی بیشتر از دو قسمت فراخوانده شده است: یک رشته جستجوی SPARQL؛ و توصیفهای صفر یا یک مجموعه داده RDF. رشته جستجوی SPARQL، توسط یک نوع query  شناسایی شده، توسط [SPARQL] تعریف شده است بطوریکه "رشته ای از کاراکترها در زبان مشخص شده توسط دستور زبان [SPARQL] با ایجاد جستجو آغاز شود". توصیف مجموعه داده های RDF ترکیبی از صفر یا یکی از رسم های ترکیبی پیش فرض RDF با ترکیب RDF از رسم های مشخص شده ی RDF توسط صفر یا انواع بیشتر default-graph-uri  — است و توسط صفر یا رسم های نام برده ی RDF، بوسیله صفر یا انواع بیشتر named-graph-uri شناسایی شده ‌اند. اینها بترتیب مطابق با کلیدواژه های FROM و FROM NAMED در [SPARQL] هستند.

انواع اینها در طرح گسسته XML ذیل، مطابق protocol-types.xsd:

<xs:element name="query-request">
  <xs:complexType>
    <xs:sequence>
      <xs:element minOccurs="1" maxOccurs="1" name="query" type="xs:string">
       <xs:annotation>
	      <xs:documentation>query is an xs:string constrained by the language definition,
         http://www.w3.org/TR/rdf-sparql-query/#grammar, as "a sequence of characters in 
         the language defined by the [SPARQL] grammar, starting with the Query production".</xs:documentation>
       </xs:annotation>
      </xs:element>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="default-graph-uri" type="xs:anyURI"/>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="named-graph-uri" type="xs:anyURI"/>
    </xs:sequence>
  </xs:complexType>

</xs:element>

گلچین طرح گسسته 1.1 XML

تعیین یک مجموعه داده RDF

مجموعه داده RDF هر یک می تواند در یک جستجوی تعیین شده [SPARQL] کلید واژه های FROM و FROM NAMED را مورد استفاده قرار دهد؛ یا می تواند در پروتکل تشریح شده در این سند تعیین شده؛ یا می تواند در هر دو رشته ی جستجو و در پروتکل تعیین شده باشد.

حل یک مجموعه داده ی مبهم RDF

در مورد جای هر دوی جستجو و پروتکل یک مجموعه داده ی RDF تعیین می‌شود، اما یکسان با مجموعه داده ی RDF نیست، مجموعه داده ی تعیین شده در پروتکل می بایستی مجموعه داده ی RDF مورد استفاده ی عملیات query متعلق به SparqlQuery باشد.

برگشت درخواستهای جستجو به مجموعه داده های RDF

یک سرویس پروتکل اعطای SPARQL می تواند یک مجموعه داده ی پیش فرض RDF را در برابر هر یک از درخواستهای جستجوی SPARQL اگر در آنجا اجرا نشده باشند مجموعه داده تعیین شده ی RDF را در پروتکل یا در درخواست جستجو تهیه نماید. یک سرویس پروتکل اعطای SPARQL می تواند پردازش هر درخواست جستجویی که قادر به تعیین مجموعه داده RDF نباشد را نپذیرد. سرانجام، یک سرویس پروتکل اعطای SPARQL می تواند پردازش هر درخواست جستجوی مغایر با هر مجموعه داده تعیین شده ی RDF را نپذیرد. پیغامهای نقص 2.1.4 query، QueryRequestRefused را ببینید.

تعیین  Base IRI

کلید واژه ی BASE در رشته ی جستجو Base IRI استفاده شده جهت رفع خویشاوندی IRIs را با شناسه ماخذ یکسان (URI): ترکیب نحوی کلی [RFC3986] بخش 5.1.1 تعیین می نماید، "مبنای جاسازس شده ی URI در محتوا". بخش 5.1.2, "مبنای URI مطابق هویت مختصر"چگونگی مبنای IRI را که می تواند ناشی از سند مختصر باشد را تعیین می نماید، همچون یک پوشش  SOAP با یک رهنمود xml:base. پروتکل URI SPARQLهای غیر مرجع را مورد جستجو قرار نمی دهد بنابراین بخش 5.1.3 را درخواست نمی کند. سرانجام، مطابق بخش 5.1.4, سرویس های پروتکل SPARQL می بایستی مبنای مالکیت  URI خوشان را تعیین کنند، که می تواند سرویس invocation URI باشد.

2.1.3  پیغام خروجی query

در کل، محتویات پیغام خروجی عملیات query متعلق به SparqlQuery نمونه ای از یک نوع پیچیده ی XML Schema است، query-result فراخوانده شده در گزیده ی 1.2, ترکیب هر دو:

  1. یک سند نتایج SRD] SPARQL] (جهت جستجوی SPARQL برای اشکال جستجوی RDF برگزیدن و پرسیدن); یا،
  2. یک رسم RDF] RDF- مفاهیم] مرتب شده، برای نمونه، در ترکیب نحوی  RDF-Syntax] RDF/XML]، یا یک رسم مرتب برابر RDF، جهت جستجوی SPARQL برای اشکال جستجوی توصیف  و طرح ریزی RDF).

نوع query-result در این W3C XML Schema گسسته، مطابق protocol-types.xsd تعیین شده است:

<xs:element name="query-result">
      <xs:annotation>
          <xs:documentation>The type for serializing query results,
          either as XML or RDF/XML.</xs:documentation>
      </xs:annotation>
      <xs:complexType>
          <xs:choice>
              <xs:element maxOccurs="1" ref="vbr:sparql"/>
              <xs:element maxOccurs="1" ref="rdf:RDF"/>
          </xs:choice>
      </xs:complexType>

</xs:element>

گلچین 1.2 XML Schema گسسته

2.1.4  پیغامهای نقص query

[WSDL2- اضافات] دستورات انتشار اشکالات مجزا که چگونگی نواقص عملیات و فعل و انفعال پیامها را تعریف می‌نمایند را مشخص می‌کند. عمل query دستور پیغام تغییرات نقص را بکار می برد:

هر پیام بعدی نخست در نمونه می‌تواند با یک پیغام نقص جایگزین شده باشد، که می‌بایستی جهت یکسانی داشته باشد. پیغام نقص بایستی به مقصد اتصال مشابهی تحویل داده شده باشد بطوریکه جایگزین آن پیغام شود، جز در صورتی که به شکل دیگری با یک توسعه یا گسترش معتبر تعیین شده باشد. اگر در آنجا مسیری به این اتصال موجود نیست، اشکال بایستی از میان رفته باشد.

بدین گونه، عملیات query نگهداشته شده در واسط SparqlQuery می‌تواند بازگردد، بجای پیغام Out، هر یک از پیغامهای MalformedQuery یا QueryRequestRefused، که در این شکل گسسته ی XML Schema از protocol-types.xsd تعیین شده اند:

<xs:element type="xs:string" name="fault-details">
    <xs:annotation>
      <xs:documentation> This element contains human-readable information about the fault
        returned by the SPARQL query processing service.</xs:documentation>
    </xs:annotation>
  </xs:element>
    <xs:element name="malformed-query">
      <xs:complexType>
          <xs:all><xs:element minOccurs="0" maxOccurs="1" ref="st:fault-details"/></xs:all>
      </xs:complexType>
  </xs:element>
  <xs:element name="query-request-refused">
      <xs:complexType>
          <xs:all><xs:element minOccurs="0" maxOccurs="1" ref="st:fault-details"/></xs:all>
      </xs:complexType>

</xs:element>

گلچین  XML Schema گسسته 1.3

MalformedQuery

هنگامی که مقدار نوع query یک رشته از کاراکترهای مجاز در زبان تعریف شده توسط دستور زبان SPARQL نیست، MalformedQuery یا پیغام نقص QueryRequestRefused بایستی برگشته باشد. مطابق دستور پیغام تغییرات نقص، اگر یک نقص WSDL برگشته باشد، شامل MalformedQuery، یک پیغام Out نبایستی برگشته باشد.

هنگامی که پیغام نقص MalformedQuery برگشته باشد، سرویس های پردازش جستجو بایستی بیانگر، اشکال زدایی یا دیگر اطلاعات افزوده برای مصرف انسانی از طریق نوع تعیین شده‌ی fault-details در گلچین 1.3 باشند.

QueryRequestRefused

این پیغام نقص WSDL می‌بایستی هنگامی که یک سرویس گیرنده درخواستی را ارایه می‌نماید که سرویس جهت پردازش نپذیرفته؛ برگشته باشد. پیغام نقص QueryRequestRefused هیچ یک را نشان نمی دهد خواه سرور بتواند یا نتواند در آینده درخواست یا درخواستهایی را پردازش کند، آن همچنین تحمیل یک  سرویس اعطای SPARQL مطابق برگشت دیگر کدهای وضعیت HTTP یا هدرهای HTTP را ملزم نمی سازد بطوریکه مناسب معناشناسی معین [HTTP] باشد.

هنگامی که پیغام خطای QueryRequestRefused برگشته، سرویس های پردازش جستجو بایستی توضیح، اشکال زدایی یا اطلاعات دیگر مورد نظر برای استفاده انسان را از طریق نوع مشخص شده ی fault-details در گلچین 1.3شامل شوند.

2.2  مقید سازی های HTTP

عملیات واسط SparqlQuery توصیف شده ی query بقدر چکیده ی عملیاتی است؛ که مقید سازی پروتکل درخواستها جهت مناسب بودن یک عملیات invocable می باشد. این دو بخش دیگر این سند مقید سازی های HTTP و SOAP را تشریح می کند. یک سرویس پروتکل conformant SPARQL بایستی واسط SparqlQuery را پشتیبانی نماید؛ اگر یک سرویس پروتکل SPARQL مقید سازی های HTTP را پشتیبانی می نماید، که آن بایستی مقید سازی ها را بطوریکه که در protocol-query.wsdl توصیف شده، پشتیبانی نماید. یک سرویس پروتکل SPARQL بایستی دیگر واسط ها را پشتیبانی کند. جهت کسب اطلاعات بیشتر  مقید سازی های 2.3 SOAP را ببینید.

[WSDL2 - اضافات] تعاریف یک وسیله از عملیات واسط چکیده مقید سازی به HTTP. مقید سازی های HTTP برای عملیات query (مطابق protocol-query.wsdl) بصورت ذیل هستند:

<!-- the HTTP GET binding for query operation -->
 <binding name="queryHttpGet" interface="tns:SparqlQuery" 
	    type="http://www.w3.org/2006/01/wsdl/http"
	    whttp:version="1.1">

   <fault ref="tns:MalformedQuery" whttp:code="400"/>
   <fault ref="tns:QueryRequestRefused" whttp:code="500"/>

   <operation ref="tns:query"
        wsdlx:safe="true"
		whttp:method="GET"
		whttp:faultSerialization="*/*"
		whttp:inputSerialization="application/x-www-form-urlencoded"
		whttp:outputSerialization="application/sparql-results+xml, application/rdf+xml, */*" />
 </binding>

 <!-- the HTTP POST binding for query operation -->

 <binding name="queryHttpPost" interface="tns:SparqlQuery"
		 type="http://www.w3.org/2006/01/wsdl/http"
		 whttp:version="1.1">
		
	  <fault ref="tns:MalformedQuery" whttp:code="400"/>
	  <fault ref="tns:QueryRequestRefused" whttp:code="500"/>
		
   <operation ref="tns:query" 
        wsdlx:safe="true"
 		whttp:method="POST" 
		whttp:faultSerialization="*/*"
		whttp:inputSerialization="application/x-www-form-urlencoded, application/xml"
		whttp:outputSerialization="application/sparql-results+xml, application/rdf+xml, */*" />	
 </binding>

در آنجا دو مقید سازیqueryHttpGetHTTP و queryHttpPost، هر دو که بصورت مقید سازیهای واسط SparqlQuery توصیف شده اند. در هر یک از این مقید سازی ها، دو نقص در واسط SparqlQuery توصیف شده، MalformedQuery و QueryRequestRefused بترتیب مقید به کدهای وضعیت HTTP 400 Bad Request و 500 Internal Server Error هستند [HTTP].

مقید سازی queryHttpGet می بایستی استفاده شده باشد، جز در مواردی که در آنجا جستجوی رمزی شده ی - URL از محدوده ی مورد استفاده تجاوز نماید، که در این مورد مقید سازی queryHttpPost می بایستی استفاده شده باشد.

نکته ای آموزنده در مورد ترتیب محدودیتها. سریال سازی خروجی مقید سازی های queryHttpGet و queryHttpPost عمدا بنابر ضرورت به ترتیبی است که انواع سریال سازی رسم های RDF را منعکس می نمایند. سریال سازی اشکال queryHttpGet و queryHttpPost همچنین آگاهانه ضروری شده اند. یک سرویس پروتکل conformant SPARQL می تواند واسط های تناوبی WSDL و مقید سازی ها را با محدودیتهای متفاوت تهیه می نماید.

queryHttpGet

این مقید سازی عملیات query از HTTP] GET] با محدودیتهای نوع سریال سازی ذیل استفاده می نماید: مقدار whttp:faultSerialization بصورت */* است؛ دوم، مقدار whttp:inputSerialization بصورت application/x-www-form-urlencoded با رمزگذاری UTF-8 می باشد؛ و سوم whttp:outputSerialization بصورت application/sparql-results+xml با رمزگذاری UTF-8 و application/rdf+xml با رمزگذاری UTF-8 و */* است.

queryHttpPost

این مقید سازی عملیات query از HTTP] POST] با محدودیتهای نوع سریال سازی ذیل استفاده می نماید: مقدار whttp:faultSerialization بصورت */* است؛ دوما مقدار whttp:inputSerialization بصورت application/x-www-form-urlencoded با رمزگذاری UTF-8 و application/xml با رمزگذاری UTF-8 است؛ و سوما whttp:outputSerialization بصورت application/sparql-results+xml با رمزگذاری UTF-8 ، application/rdf+xml با رمزگذاری UTF-8 و */* است.

2.2.1  مثال های HTTP

مثال های پیگیری HTTP چکیده ی ذیل درخواست عملیات  query را بصورت سناریوهای متفاوت جداگانه توضیح می دهد. اینها پیگیری مثالهای مجزایی مطابق پیگیریهای HTTP به سه شیوه است: (1) در هر مثال رشته "EncodedQuery" رشته ی برابر URL- رمزگذاری شده ی افزوده ی جستجوی SPARQL را در اول بلوک هر مثال ارایه می نماید؛ (2) تنها اجزای پاسخ ناتمام، شامل نتایج جستجو نمایش داده شده اند؛ (3) مقادیر URI از default-graph-uri و named-graph-uri همچنین URL- رمزی نشده است.

2.2.1.1 انتخاب با مجموعه داده ی service-supplied RDF

این جستجوی SPARQL

PREFIX dc: <http://purl.org/dc/elements/1.1/> 
SELECT ?book ?who 
WHERE { ?book dc:creator ?who }

به سرویس جستجوی http://www.example/sparql/،SPARQL ، بصورت برجسته در این پیگیری HTTP هدایت شده است:

GET /sparql/?query=EncodedQuery HTTP/1.1
Host: www.example
User-agent: my-sparql-client/0.1

آن جستجو در برابر مجموعه داده ی service-supplied RDF، توسط آن سرویس جستجوی SPARQL، برگشتهای نتیجه ی جستجوی ذیل اجرا شده است:

HTTP/1.1 200 OK
Date: Fri, 06 May 2005 20:55:12 GMT
Server: Apache/1.3.29 (Unix) PHP/4.3.4 DAV/1.0.3
Connection: close
Content-Type: application/sparql-results+xml

<?xml version="1.0"?>
<sparql xmlns="http://www.w3.org/2005/sparql-results#">

 <head>
   <variable name="book"/>
   <variable name="who"/>
 </head>
 <results distinct="false" ordered="false">
   <result>
     <binding name="book"><uri>http://www.example/book/book5</uri></binding>
     <binding name="who"><bnode>r29392923r2922</bnode></binding>
   </result>
...

   <result>
     <binding name="book"><uri>http://www.example/book/book6</uri></binding>
     <binding name="who"><bnode>r8484882r49593</bnode></binding>
   </result>
 </results>
</sparql> 
SELECT 2.2.1.2 با مجموعه داده ی simple RDF

این جستجوی SPARQL

PREFIX dc: <http://purl.org/dc/elements/1.1/> 
SELECT ?book ?who 
WHERE { ?book dc:creator ?who }

به سرویس جستجوی http://www.other.example/sparql/،SPARQL ، بصورت برجسته در این پیگیری HTTP هدایت شده است:

GET /sparql/?query=EncodedQuery&default-graph-uri=http://www.other.example/books HTTP/1.1
Host: www.other.example
User-agent: my-sparql-client/0.1

آن جستجو — در برابر شناسایی مجموع داده ی RDF توسط مقدار پارامتر default-graph-uri ، http://www.other.example/books — توسط آن سرویس جستجوی SPARQL، برگشتهای نتیجه ی جستجوی ذیل اجرا شده است:

HTTP/1.1 200 OK
Date: Fri, 06 May 2005 20:55:12 GMT
Server: Apache/1.3.29 (Unix) PHP/4.3.4 DAV/1.0.3
Connection: close
Content-Type: application/sparql-results+xml

<?xml version="1.0"?>

<sparql xmlns="http://www.w3.org/2005/sparql-results#">
 <head>
   <variable name="book"/>
   <variable name="who"/>
 </head>
...
 <results distinct="false" ordered="false">
   <result>
     <binding name="book"><uri>http://www.example/book/book2</uri></binding>
     <binding name="who"><bnode>r1115396427r1133</bnode></binding>
   </result>
   <result>
     <binding name="book"><uri>http://www.example/book/book3</uri></binding>
     <binding name="who"><bnode>r1115396427r1133</bnode></binding>
   </result>
   <result>
     <binding name="book"><uri>http://www.example/book/book1</uri></binding>
     <binding name="who"><literal>J.K. Rowling</literal></binding>
   </result>
 </results>

</sparql> 
CONSTRUCT 2.2.1.3 با مجموعه داده ی simple RDF و مذاکره محتوای HTTP

این جستجوی SPARQL

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX myfoaf: <http://www.example/jose/foaf.rdf#>

CONSTRUCT { myfoaf:jose foaf:depiction <http://www.example/jose/jose.jpg>.
            myfoaf:jose foaf:schoolHomepage <http://www.edu.example/>.
            ?s ?p ?o.}
WHERE { ?s ?p ?o. myfoaf:jose foaf:nick "Jo".
       FILTER ( ! (?s = myfoaf:kendall && ?p = foaf:knows && ?o = myfoaf:edd ) 
              && ! ( ?s = myfoaf:julia && ?p = foaf:mbox && ?o = <mailto:julia@mail.example> )
	      && ! ( ?s = myfoaf:julia && ?p = rdf:type && ?o = foaf:Person))
}

به سرویس جستجوی http://www.example/sparql/،SPARQL، بصورت برجسته در این پیگیری HTTP هدایت شده است:

GET /sparql/?query=EncodedQuery&default-graph-uri=http://www.example/jose-foaf.rdf HTTP/1.1
Host: www.example
User-agent: sparql-client/0.1
Accept: text/turtle, application/rdf+xml

با پاسخگویی برجسته اینجا:

HTTP/1.1 200 OK
Date: Fri, 06 May 2005 20:55:11 GMT
Server: Apache/1.3.29 (Unix)
Connection: close
Content-Type: text/turtle

@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix foaf: <http://xmlns.com/foaf/0.1/>.
@prefix myfoaf: <http://www.example/jose/foaf.rdf#>.

myfoaf:jose foaf:name "Jose Jimeñez";
	    foaf:depiction <http://www.example/jose/jose.jpg>;
            foaf:nick "Jo";
...
	    foaf:schoolHomepage <http://www.edu.example/>;
            foaf:workplaceHomepage <http://www.corp.example/>;
            foaf:homepage <http://www.example/jose/>;
            foaf:knows myfoaf:juan;
	    rdf:type foaf:Person.

myfoaf:juan foaf:mbox <mailto:juan@mail.example>;
	   rdf:type foaf:Person.

نکته: ثبت برای نوع رسانه ی text/turtle شروع شده بود اما در زمان این انتشار کامل نشده است. لطفا http://www.w3.org/TeamSubmission/turtle را برای نوع رسانه ی ثبت شده ی نهایی زبان Turtle ببینید.

2.2.1.4 ASK با مجموعه داده ی ساده ی RDF dataset

این جستجوی SPARQL

PREFIX dc: <http://purl.org/dc/elements/1.1/> 
ASK WHERE { ?book dc:creator "J.K. Rowling"}

به سرویس جستجوی http://www.example/sparql/،SPARQL، بصورت برجسته در این پیگیری HTTP هدایت شده است:

GET /sparql/?query=EncodedQuery&default-graph-uri=http://www.example/books HTTP/1.1
Host: www.example
User-agent: sparql-client/0.1

با پاسخگویی برجسته اینجا:

HTTP/1.1 200 OK
Date: Fri, 06 May 2005 20:48:25 GMT
Server: Apache/1.3.29 (Unix) PHP/4.3.4 DAV/1.0.3
Connection: close
Content-Type: application/sparql-results+xml

<?xml version="1.0"?>
<sparql xmlns="http://www.w3.org/2005/sparql-results#">
 <head></head>
 <boolean>true</boolean>
</sparql>
2.2.1.5 DESCRIBE با مجموعه داده ی ساده ی RDF

این جستجوی SPARQL

PREFIX books: <http://www.example/book/>
DESCRIBE books:book6

به سرویس جستجوی http://www.example/sparql/،SPARQL، بصورت برجسته در این پیگیری HTTP هدایت شده است:

GET /sparql/?query=EncodedQuery&default-graph-uri=http://www.example/books HTTP/1.1
Host: www.example
User-agent: sparql-client/0.1

با پاسخگویی برجسته اینجا:

HTTP/1.1 200 OK
Date: Wed, 03 Aug 2005 12:48:25 GMT
Server: Apache/1.3.29 (Unix) PHP/4.3.4 DAV/1.0.3
Connection: close
Content-Type:  application/rdf+xml

<?xml version="1.0"?>
<rdf:RDF ...
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:books="http://www.example/book/"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
  <rdf:Description rdf:about="http://www.example/book/book6">
    <dc:title>Example Book #6 </dc:title>
  </rdf:Description>
</rdf:RDF>
SELECT 2.2.1.6 با مجموعه داده ی پیچیده ی RDF

این جستجوی SPARQL

PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX dc: <http://purl.org/dc/elements/1.1/>

SELECT ?who ?g ?mbox
WHERE {  ?g dc:publisher ?who .
   GRAPH ?g { ?x foaf:mbox ?mbox }
}

به سرویس جستجوی http://www.example/sparql/ ،SPARQL، بصورت برجسته ی اینجا (با تفکیکهای سطر برای خوانایی) هدایت شده است:

GET /sparql/?query=EncodedQuery&default-graph-uri=http://www.example/publishers

&default-graph-uri=http://www.example/morepublishers&named-graph-uri=http://your.example/foaf-alice
&named-graph-uri=http://www.example/foaf-bob&named-graph-uri=http://www.example/foaf-susan
&named-graph-uri=http://this.example/john/foaf
Host: www.example
User-agent: sparql-client/0.1

با پاسخگویی برجسته اینجا:

HTTP/1.1 200 OK
Date: Wed, 03 Aug 2005 12:48:25 GMT
Server: Apache/1.3.29 (Unix) PHP/4.3.4 DAV/1.0.3
Connection: close
Content-Type:  application/sparql-results+xml

<?xml version="1.0"?>

<sparql xmlns="http://www.w3.org/2005/sparql-results#">
  <head>
    <variable name="who"/>
    <variable name="g"/>
    <variable name="mbox"/>
  </head>
...
  <results ordered="false" distinct="false">
    <result>
      <binding name="who">
        <literal>Alice</literal>
      </binding>
      <binding name="g">
        <uri>http://your.example/foaf-alice</uri>
      </binding>
      <binding name="mbox">
        <uri>mailto:alice@example.org</uri>
      </binding>
    </result>
    <result>
      <binding name="who">
        <literal>Bob</literal>
      </binding>
      <binding name="g">
        <uri>http://www.example/foaf-bob</uri>
      </binding>
      <binding name="mbox">
        <uri>mailto:bob@work.example</uri>
      </binding>
    </result>
    <result>
      <binding name="who">
        <literal>Susan</literal>
      </binding>
      <binding name="g">
        <uri>http://www.example/foaf-susan</uri>
      </binding>
      <binding name="mbox">
        <uri>mailto:susan@work.example</uri>
      </binding>
    </result>
    <result>
      <binding name="who">
        <literal>John</literal>
      </binding>
      <binding name="g">
        <uri>http://this.example/john/foaf</uri>
      </binding>
      <binding name="mbox">
        <uri>mailto:john@home.example</uri>
      </binding>
    </result>
  </results>

</sparql>
SELECT 2.2.1.7 با مجموعه داده ی query-only RDF

این جستجوی SPARQL

PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX dc: <http://purl.org/dc/elements/1.1/>

SELECT ?who ?g ?mbox
FROM <http://www.example/publishers>
FROM NAMED <http://www.example/alice>
FROM NAMED <http://www.example/bob>
WHERE { ?g dc:publisher ?who .
        GRAPH ?g { ?x foaf:mbox ?mbox }
}

به سرویس جستجوی http://www.example/sparql/،SPARQL، بصورت برجسته در این پیگیری HTTP هدایت شده است:

GET /sparql/?query=EncodedQuery HTTP/1.1
Host: www.example
User-agent: sparql-client/0.1

با پاسخگویی برجسته اینجا:

HTTP/1.1 200 OK
Date: Wed, 03 Aug 2005 12:48:25 GMT
Server: Apache/1.3.29 (Unix) PHP/4.3.4 DAV/1.0.3
Connection: close
Content-Type: application/sparql-results+xml

<?xml version="1.0"?>
<sparql xmlns="http://www.w3.org/2005/sparql-results#">
...
  <head>
    <variable name="who"/>
    <variable name="g"/>
    <variable name="mbox"/>
  </head>
  <results ordered="false" distinct="false">
    <result>
      <binding name="who">
      	<literal>Bob Hacker</literal>
      </binding>
      <binding name="g">
	<uri>http://www.example/bob</uri>
      </binding>
      <binding name="mbox">
        <uri>mailto:bob@oldcorp.example</uri>
      </binding>
    </result>
    <result>
      <binding name="who">
	<literal>Alice Hacker</literal>
      </binding>
      <binding name="g">
	<uri>http://www.example/alice</uri>
      </binding>
      <binding name="mbox">
	<uri>mailto:alice@work.example</uri>
      </binding>
    </result>
  </results>

</sparql>
SELECT 2.2.1.8 با مجموعه داده ی مبهم RDF

این جستجوی SPARQL

PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX dc: <http://purl.org/dc/elements/1.1/>

SELECT ?who ?g ?mbox
FROM <http://www.example/publishers>
FROM NAMED <http://www.example/john>
FROM NAMED <http://www.example/susan>
WHERE { ?g dc:publisher ?who .
        GRAPH ?g { ?x foaf:mbox ?mbox }
}

به سرویس جستجوی http://www.example/sparql/،SPARQL، بصورت برجسته در این پیگیری HTTP هدایت شده است:

GET /sparql/?query=EncodedQuery&default-graph-uri=http://www.example/morepublishers
&named-graph-uri=http://www.example/bob&named-graph-uri=http://www.example/alice HTTP/1.1
Host: www.example
User-agent: sparql-client/0.1

این عملیات پروتکل حاوی یک مجموعه داده ی RDF است: مجموعه داده ی مشخص شده در جستجو نسبت به یک نوع مشخص در پروتکل (از طریق پارامترهای default-graph-uri و named-graph-uri) متفاوت است. یک سرویس پروتکل conformant SPARQL باید با اجرای جستجو در برابر مجموعه داده ی مشخص شده ی RDF در پروتکل، این ابهام را رفع نماید:

HTTP/1.1 200 OK
Date: Wed, 03 Aug 2005 12:48:25 GMT
Server: Apache/1.3.29 (Unix) PHP/4.3.4 DAV/1.0.3
Connection: close
Content-Type: application/sparql-results+xml

<?xml version="1.0"?>
<sparql xmlns="http://www.w3.org/2005/sparql-results#">
  <head>
    <variable name="who"/>
    <variable name="g"/>
    <variable name="mbox"/>
  </head>
  <results ordered="false" distinct="false">

    <result>
      <binding name="who">
      	<literal>Bob Hacker</literal>
      </binding>
      <binding name="g">
	<uri>http://www.example/bob</uri>
      </binding>
      <binding name="mbox">
        <uri>mailto:bob@oldcorp.example</uri>
      </binding>
    </result>
    <result>
      <binding name="who">
	<literal>Alice Hacker</literal>
      </binding>
      <binding name="g">
	<uri>http://www.example/alice</uri>
      </binding>
      <binding name="mbox">
	<uri>mailto:alice@work.example</uri>
      </binding>
    </result>
  </results>

</sparql>
2.2.1.9 SELECT با جستجوی ناقص اشکال

این جستجوی بی اعتبار SPARQL از نظر نحوی

PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?name
WHERE { ?x foaf:name ?name
ORDER BY ?name }

به سرویس جستجوی http://www.example/sparql/،SPARQL، بصورت برجسته در این پیگیری HTTP هدایت شده است:

GET /sparql/?query=EncodedQuery&default-graph-uri=http://www.example/morepublishers HTTP/1.1
Host: www.example
User-agent: sparql-client/0.1

با پاسخ — MalformedQuery تغییر اشکال پیغام خروجی، مطابق 2.1 SparqlQuery — برجسته شده در اینجا:

HTTP/1.1 400 Bad Request
Date: Wed, 03 Aug 2005 12:48:25 GMT
Server: Apache/1.3.29 (Unix) PHP/4.3.4 DAV/1.0.3
Connection: close
Content-Type: text/plain; charset=UTF-8

4:syntax error, unexpected ORDER, expecting '}'
SELECT 2.2.1.10 با عدم پذیرش درخواست جستجوی اشکال

این جستجوی SPARQL

PREFIX bio: <http://bio.example/schema/#>
SELECT ?valence
FROM <http://another.example/protein-db.rdf>
WHERE { ?x bio:protein ?valence }
ORDER BY ?valence

به سرویس جستجوی http://www.example/sparql/،SPARQL، بصورت برجسته در این پیگیری HTTP هدایت شده است:

GET /sparql/?query=EncodedQuery&default-graph-uri=http://another.example/protein-db.rdf HTTP/1.1
Host: www.example
User-agent: sparql-client/0.1

با پاسخ — QueryRequestRefused تغییر اشکال پیغام خروجی، مطابق 2.1 SparqlQuery — برجسته شده در اینجا:

HTTP/1.1 500 Internal Server Error
Date: Wed, 03 Aug 2005 12:48:25 GMT
Server: Apache/1.3.29 (Unix) PHP/4.3.4 DAV/1.0.3
Connection: close
Content-Type: text/html; charset=UTF-8

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>SPARQL Processing Service: Query Request Refused</title>
</head>
<body>
<p> Query Request Refused: your request could not be processed because 
 <code>http://another.example/protein-db.rdf</code> could not be retrieved within 
 the time alloted.</p>

</body>
</html>
2.2.1.11 SELECT بسیار بلند مقید سازی POST  مورد استفاده ی جستجو

برخی جستجوهای SPARQL، که ممکن است ماشین ایجاد نموده باشد، می تواند از انتقال یافته ی قابل اعتماد از طریق اتصالات HTTP GET توصیف شده در 2.2 HTTP اتصالات باشد. در آن موارد اتصال توصیف شده ی POST در 2.2 می تواند استفاده شده باشد. این جستجوی SPARQL.

PREFIX : <http://www.w3.org/2002/12/cal/icaltzd#>
PREFIX Chi: <http://www.w3.org/2002/12/cal/test/Chiefs.ics#>
PREFIX New: <http://www.w3.org/2002/12/cal/tzd/America/New_York#>
PREFIX XML: <http://www.w3.org/2001/XMLSchema#>

SELECT ?summary
WHERE {
    {
	Chi:D603E2AC-C1C9-11D6-9446-003065F198AC     a :Vevent;
         :dtend "2002-09-08T16:00:00"^^New:tz;
         :dtstamp "2002-09-06T03:09:27Z"^^XML:dateTime;
         :dtstart "2002-09-08T13:00:00"^^New:tz;
         :summary ?summary;
         :uid "D603E2AC-C1C9-11D6-9446-003065F198AC" .
   	}
	UNION
    {
	Chi:D603E90B-C1C9-11D6-9446-003065F198AC     a :Vevent;
         :dtend "2002-09-15T16:00:00"^^New:tz;
         :dtstamp "2002-09-06T03:10:19Z"^^XML:dateTime;
         :dtstart "2002-09-15T13:00:00"^^New:tz;
         :summary ?summary;
         :uid "D603E90B-C1C9-11D6-9446-003065F198AC" .
   	}
	UNION
    {
	Chi:D603ED6E-C1C9-11D6-9446-003065F198AC     a :Vevent;
         :dtend "2002-09-22T16:00:00"^^New:tz;
         :dtstamp "2002-09-06T03:11:05Z"^^XML:dateTime;
         :dtstart "2002-09-22T13:00:00"^^New:tz;
         :summary ?summary;
         :uid "D603ED6E-C1C9-11D6-9446-003065F198AC" .
   	}
	UNION
    {
	Chi:D603F18C-C1C9-11D6-9446-003065F198AC     a :Vevent;
         :dtend "2002-09-29T16:00:00"^^New:tz;
         :dtstamp "2002-09-06T03:15:46Z"^^XML:dateTime;
         :dtstart "2002-09-29T13:00:00"^^New:tz;
         :summary ?summary;
         :uid "D603F18C-C1C9-11D6-9446-003065F198AC" .
   	}
	UNION
    {
	Chi:D603F5B7-C1C9-11D6-9446-003065F198AC     a :Vevent;
         :dtend "2002-11-04"^^XML:date;
         :dtstamp "2002-09-06T03:12:53Z"^^XML:dateTime;
         :dtstart "2002-11-03"^^XML:date;
         :summary ?summary;
         :uid "D603F5B7-C1C9-11D6-9446-003065F198AC" .
   	}
	UNION
    {
	Chi:D603F9D7-C1C9-11D6-9446-003065F198AC     a :Vevent;
         :dtend "2002-11-10T20:15:00"^^New:tz;
         :dtstamp "2002-09-06T03:14:12Z"^^XML:dateTime;
         :dtstart "2002-11-10T17:15:00"^^New:tz;
         :summary ?summary;
         :uid "D603F9D7-C1C9-11D6-9446-003065F198AC" .
    }
	UNION
    {
	Chi:D604022C-C1C9-11D6-9446-003065F198AC     a :Vevent;
         :dtend "2002-11-17T17:00:00"^^New:tz;
         :dtstamp "2002-09-06T03:14:51Z"^^XML:dateTime;
         :dtstart "2002-11-17T14:00:00"^^New:tz;
         :summary ?summary;
         :uid "D604022C-C1C9-11D6-9446-003065F198AC" .
    }
	UNION
    {
	Chi:D604065C-C1C9-11D6-9446-003065F198AC     a :Vevent;
         :dtend "2002-10-06T19:05:00"^^New:tz;
         :dtstamp "2002-09-06T03:16:54Z"^^XML:dateTime;
         :dtstart "2002-10-06T16:05:00"^^New:tz;
         :summary ?summary;
         :uid "D604065C-C1C9-11D6-9446-003065F198AC" .
    }
	UNION
    {
	Chi:D6040A7E-C1C9-11D6-9446-003065F198AC     a :Vevent;
         :dtend "2002-10-13T19:15:00"^^New:tz;
         :dtstamp "2002-09-06T03:17:51Z"^^XML:dateTime;
         :dtstart "2002-10-13T16:15:00"^^New:tz;
         :summary ?summary;
         :uid "D6040A7E-C1C9-11D6-9446-003065F198AC" .
    }
	UNION
    {
	Chi:D6040E96-C1C9-11D6-9446-003065F198AC     a :Vevent;
         :dtend "2002-10-20T16:00:00"^^New:tz;
         :dtstamp "2002-09-06T03:18:32Z"^^XML:dateTime;
         :dtstart "2002-10-20T13:00:00"^^New:tz;
         :summary ?summary;
         :uid "D6040E96-C1C9-11D6-9446-003065F198AC" .
    }
	UNION
    {
	Chi:D6041270-C1C9-11D6-9446-003065F198AC     a :Vevent;
         :dtend "2002-10-27T17:00:00"^^New:tz;
         :dtstamp "2002-09-06T03:19:15Z"^^XML:dateTime;
         :dtstart "2002-10-27T14:00:00"^^New:tz;
         :summary ?summary;
         :uid "D6041270-C1C9-11D6-9446-003065F198AC" .
    }
	UNION
    {
	Chi:D6041673-C1C9-11D6-9446-003065F198AC     a :Vevent;
         :dtend "2002-11-24T20:05:00"^^New:tz;
         :dtstamp "2002-09-06T03:22:09Z"^^XML:dateTime;
         :dtstart "2002-11-24T17:05:00"^^New:tz;
         :summary ?summary;
         :uid "D6041673-C1C9-11D6-9446-003065F198AC" .
    }
	UNION
    {
	Chi:D6041A73-C1C9-11D6-9446-003065F198AC     a :Vevent;
         :dtend "2002-12-01T17:00:00"^^New:tz;
         :dtstamp "2002-09-06T03:22:52Z"^^XML:dateTime;
         :dtstart "2002-12-01T14:00:00"^^New:tz;
         :summary ?summary;
         :uid "D6041A73-C1C9-11D6-9446-003065F198AC" .
    }
	UNION
    {
	Chi:D60421EF-C1C9-11D6-9446-003065F198AC     a :Vevent;
         :dtend "2002-12-08T17:00:00"^^New:tz;
         :dtstamp "2002-09-06T03:24:04Z"^^XML:dateTime;
         :dtstart "2002-12-08T14:00:00"^^New:tz;
         :summary ?summary;
         :uid "D60421EF-C1C9-11D6-9446-003065F198AC" .
    }
	UNION
    {
	Chi:D6042660-C1C9-11D6-9446-003065F198AC     a :Vevent;
         :dtend "2002-12-15T20:05:00"^^New:tz;
         :dtstamp "2002-09-06T03:25:03Z"^^XML:dateTime;
         :dtstart "2002-12-15T17:05:00"^^New:tz;
         :summary ?summary;
         :uid "D6042660-C1C9-11D6-9446-003065F198AC" .
    }
	UNION
    {
	Chi:D6042A93-C1C9-11D6-9446-003065F198AC     a :Vevent;
         :dtend "2002-12-22T17:00:00"^^New:tz;
         :dtstamp "2002-09-06T03:25:47Z"^^XML:dateTime;
         :dtstart "2002-12-22T14:00:00"^^New:tz;
         :summary ?summary;
         :uid "D6042A93-C1C9-11D6-9446-003065F198AC" .
    }
	UNION
    {
	Chi:D6042EDF-C1C9-11D6-9446-003065F198AC     a :Vevent;
         :dtend "2002-12-28T21:00:00"^^New:tz;
         :dtstamp "2002-09-06T03:26:51Z"^^XML:dateTime;
         :dtstart "2002-12-28T18:00:00"^^New:tz;
         :summary ?summary;
         :uid "D6042EDF-C1C9-11D6-9446-003065F198AC" .
    }
}

به سرویس جستجوی http://www.example/sparql/،SPARQL، بصورت برجسته در این پیگیری HTTP هدایت شده است:

POST /sparql/ HTTP/1.1
Host: www.example
User-agent: sparql-client/0.1
Content-Type: application/x-www-form-urlencoded
Content-Length: 9461

query=EncodedQuery&default-graph-uri=http://another.example/calendar.rdf

با پاسخگویی برجسته اینجا:

HTTP/1.1 200 OK
Date: Wed, 03 Aug 2005 12:48:25 GMT
Server: Apache/1.3.29 (Unix) PHP/4.3.4 DAV/1.0.3
Connection: close
Content-Type: application/sparql-results+xml

<?xml version="1.0"?>
<sparql xmlns="http://www.w3.org/2005/sparql-results#">
    <head>
        <variable name="summary"/>
    </head>
    <results ordered="false" distinct="false">
        <result>
            <binding name="summary">
                <literal>Chiefs vs. Cleveland @ Cleveland Stadium</literal>
            </binding>
        </result>
        <result>
            <binding name="summary">
                <literal>Chiefs vs. Jacksonville @ Arrowhead Stadium</literal>
            </binding>
        </result>
        <result>
            <binding name="summary">
                <literal>Chiefs vs. New England @ Gillette Stadium</literal>
            </binding>
        </result>
        ...

        <result>
            <binding name="summary">
                <literal>Chiefs vs. Miami @ Arrowhead Stadium</literal>
            </binding>
        </result>
        <result>
            <binding name="summary">
                <literal>BYE</literal>
            </binding>
        </result>
        <result>
            <binding name="summary">
                <literal>Chiefs vs. San Francisco @ 49ers Stadium at Candlestick Point</literal>
            </binding>
        </result>
        <result>
            <binding name="summary">
                <literal>Chiefs vs. Buffalo @ Arrowhead Stadium</literal>
            </binding>
        </result>
        <result>
            <binding name="summary">
                <literal>Chiefs vs. NY Jets @ Giants Stadium</literal>
            </binding>
        </result>
        <result>
            <binding name="summary">
                <literal>Chiefs vs. San Diego @ Qualcomm Stadium</literal>
            </binding>
        </result>
        <result>
            <binding name="summary">
                <literal>Chiefs vs. Denver @ Arrowhead Stadium</literal>
            </binding>
        </result>
        <result>
            <binding name="summary">
                <literal>Chiefs vs. Oakland @ Arrowhead Stadium</literal>
            </binding>
        </result>
        <result>
            <binding name="summary">
                <literal>Chiefs vs. Seattle @ Seahawks Stadium</literal>
            </binding>
        </result>
        <result>
            <binding name="summary">
                <literal>Chiefs vs. Arizona @ Arrowhead Stadium</literal>
            </binding>
        </result>
        <result>
            <binding name="summary">
                <literal>Chiefs vs. St. Louis @ Arrowhead Stadium</literal>
            </binding>
        </result>
        <result>
            <binding name="summary">
                <literal>Chiefs vs. Denver @ INVESCO Field at Mile High</literal>
            </binding>
        </result>
        <result>
            <binding name="summary">
                <literal>Chiefs vs. San Diego @ Arrowhead Stadium</literal>
            </binding>
        </result>

        <result>
            <binding name="summary">
                <literal>Chiefs vs. Oakland @ Network Associates Coliseum</literal>
            </binding>
        </result>
    </results>
</sparql>
2.2.1.12 SELECT با بین المللی کردن

جستجوهای SPARQL می تواند شامل مجموعه کاراکترهای بین المللی شده باشد. این جستجوی SPARQL

PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX ?: <http://www.w3.org/2001/sw/DataAccess/tests/data/i18n/kanji.ttl#>
SELECT ?name ?food 
WHERE { [ foaf:name ?name ; ?:??? ?food ] . }

به سرویس جستجوی http://www.example/sparql/،SPARQL، بصورت برجسته در این پیگیری HTTP هدایت شده است:

GET /sparql/?query=EncodedQuery

Host: www.example
User-agent: sparql-client/0.1
HTTP/1.1 200 OK
Date: Wed, 03 Aug 2005 12:48:25 GMT
Server: Apache/1.3.29 (Unix)
Connection: close
Content-Type: application/sparql-results+xml

<?xml version="1.0"?>
<sparql xmlns="http://www.w3.org/2005/sparql-results#">
...
</sparql>
2.2.1.13 SELECT با اتصال queryHttpPost و ورودی XML

در برخی نسخه ی آینده ی جستجوهای SPARQL می تواند بصورت XML مرتب شده و از طریق HTTP POST به یک سرویس جستجوی SPARQL هدایت شده باشد. این جستجوی SPARQL

<?xml version="1.0"?>
<rdf-query xmlns="http://example.org/SparqlX/">
 <select><variable name="book"/><variable name="who"/></select>
 <query-pattern>
	<triple-pattern>
		<subject><variable name="book"/></subject>
		<predicate><uri>http://purl.org/dc/elements/1.1/creator</uri></predicate>
		<object><variable name="who"/></object>
	</triple-pattern>
 </query-pattern>

</rdf-query>

به سرویس جستجوی http://www.example/sparql/،SPARQL، بصورت برجسته در این پیگیری HTTP هدایت شده است:

POST /sparql/ HTTP/1.1
Host: www.example
User-agent: my-sparql-client/0.1
Content-type: application/xml

<?xml version="1.0"?>
<rdf-query xmlns="http://example.org/SparqlX/">
<select><variable name="book"/><variable name="who"/></select>

<query-pattern>
<triple-pattern>
	<subject><variable name="book"/></subject>
	<predicate><uri>http://purl.org/dc/elements/1.1/creator</uri></predicate>
	<object><variable name="who"/></object>
</triple-pattern>
</query-pattern>
</rdf-query>

آن جستجو در برابر مجموعه داده ی سرویس - تامین کرده RDF، توسط آن سرویس جستجوی SPARQL اجرا شده، نتیجه ی جستجوی ذیل بر می گردد:

HTTP/1.1 200 OK
Date: Fri, 06 May 2005 20:55:12 GMT
Server: Apache/1.3.29 (Unix) PHP/4.3.4 DAV/1.0.3
Connection: close
Content-Type: application/sparql-results+xml

<?xml version="1.0"?>
<sparql xmlns="http://www.w3.org/2005/sparql-results#">

 <head>
   <variable name="book"/>
   <variable name="who"/>
 </head>
 <results distinct="false" ordered="false">
   <result>
     <binding name="book"><uri>http://www.example/book/book5</uri></binding>
     <binding name="who"><bnode>r29392923r2922</bnode></binding>
   </result>
...

   <result>
     <binding name="book"><uri>http://www.example/book/book6</uri></binding>
     <binding name="who"><bnode>r8484882r49593</bnode></binding>
   </result>
 </results>
</sparql> 

2.3  الزامات SOAP

[WSDL2-Adjuncts] معانی یک میانگین عملیات واسطه ی مختصر یک اتصال به SOAP. اتصالات SOAP برای عملیات query (مطابق protocol-query.wsdl) بصورت ذیل می باشند:

   <binding name="querySoap" interface="SparqlQuery"
	    type="http://www.w3.org/2006/01/wsdl/soap"
            wsoap:version="1.2"
	    wsoap:protocol="http://www.w3.org/2003/05/soap/bindings/HTTP">

    <fault ref="tns:MalformedQuery" wsoap:code="soap:Sender" />
    <fault ref="tns:QueryRequestRefused" wsoap:code="soap:Sender" />

    <operation ref="tns:query" wsoap:mep="http://www.w3.org/2003/05/soap/mep/request-response" />

  </binding>

نام اتصال SOAP از عملیات query متعلق به SparqlQuery بصورت querySoap است؛ آن یک اتصال SOAP بواسطه ی مقدار ویژگی type است، که URI با توان SOAP را  شروع می نماید. نگارش SOAP هست 1.2. پروتکل استفاده شده در این اتصال  SOAP تحت HTTP هست، بطوری که تصمیم گرفته شده توسط مقدار ویژگی wsoap:protocol از URI تعیین گردد. اگر یک سرویس پروتکل SPARQL اتصالات SOAP را با مقدار ویژگی {http://www.w3.org/2006/01/wsdl/soap, protocol} مورد پشتیبانی قرار دهد با توان http://www.w3.org/2003/05/soap/bindings/HTTP را شروع می نماید، که بایستی از اتصالات بصورتی که در protocol-query.wsdl تشریح شده، پشتیبانی نماید. اتصالات SOAP با مقادیر wsoap:protocol با توان ارسال شده ی دیگر پروتکلها از HTTP در این سند تشریح نشده است.

دو عنصر fault به پیغامهای اشکال تعیین شده در واسط SparqlQuery اشاره می نمایند.

سرانجام، مراجع عنصر operation عملیات query از واسط SparqlQuery که قبلا همچون در گلچین 1.0 فوق الذکر توصیف شده است. پس از این اتصال SOAP توصیفات عملیات بصورت استفاده ی HTTP تحت پروتکل نقل و انتقال، مقدار ویژگی wsoap:mep تصمیم می گیرد که روش HTTP مورد استفاده قرار گیرد. این عملیات بصورتی که توسط یک نمونه ی مبادله ی پیغام SOAP بکار برده شده، توصیف شده است http://www.w3.org/2003/05/soap/mep/request-response، که مطابق با ویژگی های پشتیبانی شده ی SOAP12] 7.4] به یک روش HTTP POST محدود شده است.

2.3.1  نمونه ها ی SOAP

POST /services/sparql-query HTTP/1.1
Content-Type: application/soap+xml
Accept: application/soap+xml, multipart/related, text/*
User-Agent: Axis/1.2.1
Host: www.example
SOAPAction: ""
Content-Length: 438

<?xml version="1.0" encoding="UTF-8"?>
   <soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <soapenv:Body>
         <query-request xmlns="http://www.w3.org/2005/09/sparql-protocol-types/#">
            <query>SELECT ?z {?x ?y ?z . FILTER regex(?z, 'Harry')}</query>
         </query-request>
      </soapenv:Body>
   </soapenv:Envelope>
HTTP/1.1 200 OK
Content-Type: application/soap+xml

<?xml version="1.0" encoding="utf-8"?>
   <soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope/"
   xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <soapenv:Body> 
         <query-result xmlns="http://www.w3.org/2005/09/sparql-protocol-types/#">
            <ns1:sparql xmlns:ns1="http://www.w3.org/2005/sparql-results#">
               <ns1:head>
                  <ns1:variable name="z"/>
               </ns1:head>
               <ns1:results distinct="false" ordered="false">
                  <ns1:result>
                     <ns1:binding name="z">
                        <ns1:literal>Harry Potter and the Chamber of Secrets</ns1:literal>
                     </ns1:binding>
                  </ns1:result>
                  ...

                  <ns1:result>
                     <ns1:binding name="z">
                        <ns1:literal>Harry Potter and the Half-Blood Prince</ns1:literal>
                     </ns1:binding>
                  </ns1:result>
                  <ns1:result>
                     <ns1:binding name="z">
                        <ns1:literal>Harry Potter and the Goblet of Fire</ns1:literal>
                     </ns1:binding>
                  </ns1:result>
                  <ns1:result>
                     <ns1:binding name="z">
                        <ns1:literal>Harry Potter and the Philosopher's Stone</ns1:literal>
                     </ns1:binding>
                  </ns1:result>
                  <ns1:result>
                     <ns1:binding name="z">
                        <ns1:literal>Harry Potter and the Order of the Phoenix</ns1:literal>
                     </ns1:binding>
                  </ns1:result>
                  <ns1:result>
                     <ns1:binding name="z">
                        <ns1:literal>Harry Potter and the Prisoner Of Azkaban</ns1:literal>
                     </ns1:binding>
                  </ns1:result>

               </ns1:results>
            </ns1:sparql>
         </query-result>
      </soapenv:Body>
   </soapenv:Envelope>

3. سیاست ملاحظات

3.1 امنیت

آنجا حداقل دو منبع ممکن از حملات denial-of-service در برابر سرویس های پروتکل SPARQL وجود دارد. نخست، نتیجه ی جستجوهای تحت اجبار می تواند در ارقام بسیار بزرگ نتایج باشد، که ممکن است نیازمند هزینه های هنگفت منابع محاسبه جهت پردازش، گردآوری یا عودت باشد. منبع ممکن دیگر جستجوها شامل پیچیدگی بسیار — هر یک بواسطه ی سایز منبع، شماره ی منابع بازیابی شده یا ترکیبی از سایز و رقم توصیفات مجموعه داده ی — RDF باشد، که سرویس می تواند از گردآوری خارج از مصرف مهم منابع، شامل پهنای باند، CPU یا حافظه ی ثانویه ناتوان باشد. در برخی موارد چنین هزینه هایی می تواند بطور موثر یک تعدی denial-of-service را ایجاد نماید. یک سرویس پروتکل SPARQL می تواند محدودیتهای جایگزین روی منابع که بازیابی های آن یا روی نرخ که در منابع خارجی بازیابی شده، باشد. آنجا ممکن است منابع دیگری از تعدی های denial-of-service در برابر سرویس های پردازش جستجوی SPARQL موجود باشد.

از آنجایی که یک سرویس پروتکل SPARQL می تواند درخواستهای دیگر سرورهای مبدأ HTTP را به نیابت از مشتری هایش بسازد، آن می تواند بصورت برداری از حملات در برابر دیگر سایتها یا سرویس ها استفاده شده باشد. بدین گونه، سرویس های پروتکل SPARQL می توانند بطور موثر بصورت پروکسی ها برای مشتری های شخص ثالث عمل نمایند. سرویس های این چنینی می توانند محدودیتهای جایگزین روی منابعی که بازیافتن آنها یا روی هزینه که درمنابع خارجی ممکن است بازیابی شده، باشد. سرویس های پروتکل SPARQL می توانند درخواستهای مشتری ثبت وقایع در چنین مسیری را جهت سهولت ردیابی ایشان نسبت به سرورهای مبدأ شخص ثالث یا سرویس ها اعمال نمایند.

سرویس های پروتکل SPARQL می توانند انتخاب کنند که اینها و گرانی دیگر نمایان شود یا در غیر اینصورت نادرست، جستجوها، زمان ضروری یا محدودیتهای حافظه روی جستجوها یا دیگر محدودیتهای تحمیلی تبدیل آنچه متعلق به آسیب پذیری سرویس (یا دیگر محدودیتهای سرویس) جهت حملات denial-of-service است را اعمال نمایند. آنها همچنین می توانند پردازش چنین درخواستهای جستجو را نپذیرند.

 IRI های متفاوت می توانند ظاهر یکسانی داشته باشند. کاراکترها در اسکریپتهای متفاوت می توانند دیدار کوتاهی نمایند (یک Cyrillic "?" می تواند مشابه یک "o" لاتین، ظاهر شود). یک کاراکتر دنبال شده با کاراکترهای ترکیبی می تواند نمایش دیداری یکسانی بصورت کاراکتر دیگری داشته باشد (LATIN SMALL LETTER E ادامه یافته توسط COMBINING ACUTE ACCENT دارای نمایش دیداری یکسانی بصورت LATIN SMALL LETTER E WITH ACUTE می باشد). کاربرهای SPARQL بایستی مراقب باشند که جستجوها با IRI هایی که مطابق IRI هایی در داده ها هستند، شکل داده شوند. جهت کسب اطلاعات بیشتر در مورد تطبیق کاراکترهای مشابه ممکن است در تضمین های امنیت یونی کد [UNISEC] و شناسه های منبع بین المللی شده (IRI ها)ی [RFC3987] بخش 8 یافت شود.

4. تطبیق

وضعیت بخش های پروتکل SPARQL برای RDF (این سند) بصورت ذیل است:

در کل، هر دوی protocol-query.wsdl و protocol-types.xsd  اصولی هستند.

یک  سرویس پروتکل conformant SPARQL:

  1. بایستی واسط SparqlQuery بکار برده شود؛
  2. امکان دارد HTTP، SOAP یا هر دوی اتصالات HTTP و SOAP از عملیات query واسط SparqlQuery بکار رود؛
  3. بایستی اتصالات HTTP یا SOAP از query در مسیر تشریح شده در این سند ("پروتکل SPARQL برای RDF")، در protocol-query.wsdl و protocol-types.xsd پیاده سازی شود؛
  4. ممکن است واسط های دیگر، اتصالات عملیات آن واسط ها یا اتصالات عملیات query را متفاوت از اتصالات توصیف شده ی اصولی HTTP یا SOAP توسط پروتکل SPARQL برای RDF پیاده نمایند؛ و
  5. بایستی با محدودیت های اصولی (نشان داده شده توسط کلید واژه های [RFC 2119]) تشریح شده در 3. سیاست ملاحظات پایدار باشد.

5. منابع

1. اصولی

[RFC2119]
Key words for use in RFCs to Indicate Requirement Levels, RFC 2119, S. Bradner, March 1997
[RFC3987]
Internationalized Resource Identifiers (IRIs), RFC 3987, M. Dürst, M. Suignard
[RFC3986]
Uniform Resource Identifier (URI): Generic Syntax, RFC 3986, T. Berners-Lee, R. Fielding, L. Masinter, January 2005
[HTTP]
Hypertext Transfer Protocol -- HTTP/1.1, RFC 2616, R. Fielding, J. Gettys, J. Mogul, H. Frystyk, L. Masinter, P. Leach, T. Berners-Lee, June 1999
[RDF-Concepts]
Resource Description Framework (RDF): Concepts and Abstract Syntax, G. Klyne, J. Carroll, Editors, W3C Recommendation, 10 February 2004, http://www.w3.org/TR/2004/REC-rdf-primer-20040210/ . Latest version http://www.w3.org/TR/rdf-concepts/ .
[RDF-Syntax]
RDF/XML Syntax Specification (Revised), D. Beckett, Editor, W3C Recommendation, 10 February 2004, http://www.w3.org/TR/2004/REC-rdf-syntax-grammar-20040210/ . Latest version available at http://www.w3.org/TR/rdf-syntax-grammar .
[SOAP12]
SOAP Version 1.2 Part 2: Adjuncts, M. Gudgin, M. Hadley, N. Mendelsohn, J.-J. Moreau, H.F. Nielsen, Editors, W3C Recommendation, 27 April 2007, http://www.w3.org/TR/2007/REC-soap12-part2-20070427/ . Latest version http://www.w3.org/TR/soap12-part2/ .
[SPARQL]
SPARQL Query Language for RDF, A. Seaborne, E. Prud'hommeaux, Editors, W3C Recommendation, 15 January 2008, http://www.w3.org/TR/2008/REC-rdf-sparql-query-20080115/ . Latest version available at http://www.w3.org/TR/rdf-sparql-query/ .
[SRD]
SPARQL Query Results XML Format, D. Beckett, J. Broekstra, Editors, W3C Recommendation, 15 January 2008, http://www.w3.org/TR/2008/REC-rdf-sparql-XMLres-20080115/ Latest version http://www.w3.org/TR/rdf-sparql-XMLres/ .
WSDL2
Web Services Description Language (WSDL) Version 2.0 Part 1: Core Language, R. Chinnici, J. Moreau, A. Ryman, S. Weerawarana, Editors, W3C Recommendation, 26 June 2007, http://www.w3.org/TR/2007/REC-wsdl20-20070626/ . Latest version available at http://www.w3.org/TR/wsdl20 .
WSDL2-Adjuncts
Web Services Description Language (WSDL) Version 2.0 Part 2: Adjuncts, R. Chinnici, H. Haas, A. A. Lewis, J. Moreau, D. Orchard, S. Weerawarana, Editors, W3C Recommendation, 26 June 2007, http://www.w3.org/TR/2007/REC-wsdl20-adjuncts-20070626/ . Latest version available at http://www.w3.org/TR/wsdl20-adjuncts .

2. آموزنده

[UC&R]
RDF Data Access Use Cases and Requirements, K. Clark, Editor, W3C Working Draft, 25 March 2005, http://www.w3.org/TR/2005/WD-rdf-dawg-uc-20050325/ . Latest version available at http://www.w3.org/TR/rdf-dawg-uc/ .
[WSDL2-Primer]
Web Services Description Language (WSDL) Version 2.0 Part 0: Primer, K. Liu, D. Booth, Editors, W3C Recommendation, 26 June 2007, http://www.w3.org/TR/2007/REC-wsdl20-primer-20070626/ . Latest version available at http://www.w3.org/TR/wsdl20-primer/ .
[UNISEC]
Unicode Security Considerations, Mark Davis, Michel Suignard

6. سپاسگزاریها

از اعضای DAWG، بویژه بیجن پارژا، براین تامسن، اندی سیبورن، ستیو هریس، اریک پرودهاموکس، یاشیو فیوکیشایج، هاورد کتز، درک - ویلم، ون گیولیک، دن کانلی  و لی فیجنبام سپاسگزارم. تشکرات خاص به الایس توریس داشته برای کمک سخاوتمندانه و پشتیبانی اش. به همان اندازه هم از همکارهای UMD ام جیم هندلر، ران الفورد، امی الفورد، یاردین کتز، کریس تستا و اعضای هم کار اجتماعی وب معنایی میندلاب سپاسگزارم. همچنین تشکرات مخصوصی به همکارم NASA و دوستم اندی سکین دارم. من همچنین سپاسگزار جاسک کاپکی، مورن فردریکسن، مارک بیکر، جانری الجرمیسن،  دانی اریس، برند سایمن، گراهام کلاین، آرجن کمپمن، تیم برنرز لی، دان بریکلی، پاتریک ستیکلر، کارل دوباست، جاناتان مارش، لی دادس، دیوید وود، رتو کرمنچر، تامس روسلر، دانی ویتزنر، پاول داونی، هیگو هاس، ریچارد نیومن هستم.


ثبت وقایع تغییر

آنجا تغییری پس از توصیه ی پیشنهادی نوامبر 2007 بوده، نمونه ی CONSTRUCT با نمونه ی RDF جهت استفاده ی نوع رسانه ی text/turtle بروز شده بود، توجه داشته باشید ثبت نوع رسانه در جریان است.