YAZ-CLIENT(1) دستورها YAZ-CLIENT(1)

yaz-client - کلاینت Z39.50/SRU برای پیاده‌سازان

yaz-client [-a apdulog] [-b berdump] [-c cclfile] [-d dump] [-f cmdfile] [-k size] [-m marclog] [-p proxy-addr] [-q cqlfile] [-t dispcharset] [-u auth] [-v loglevel] [-V] [-x] [server-addr]

yaz-client یک کلاینت (origin) برای Z39.50[1]/SRU[2] با یک واسط خط فرمان ساده است که به شما امکان آزمایش رفتار و عملکرد مقصدهای Z39.50 و سرورهای SRU را می‌دهد.

از نسخهٔ 4.1.0 نرم‌افزار YAZ، yaz-client همچنین می‌تواند به عنوان یک کلاینت وب‌سرویس Solr[3] عمل کند.

اگر server-addr مشخص شده باشد، کلاینت یک اتصال به مقصد Z39.50/SRU در آدرس داده‌شده برقرار می‌کند.

هنگامی که yaz-client راه‌اندازی می‌شود، تلاش می‌کند دستورها را از یکی از فایل‌های زیر بخواند:

•فایل دستورات در صورتی که توسط گزینهٔ -f مشخص شده باشد.
•فایل .yazclientrc در دایرکتوری کاری جاری.
•فایل .yazclientrc در دایرکتوری خانگی کاربر. مقدار متغیر محیطی $HOME برای تعیین دایرکتوری خانگی به کار می‌رود. معمولاً $HOME تنها در سیستم‌های POSIX مانند Linux، FreeBSD و Solaris تنظیم می‌شود.

-a filename

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

-b filename

در صورت تعیین، YAZ داده‌های BER را در قالبی خوانا درون فایل مشخص‌شده ذخیره (dump) می‌کند. اگر filename به صورت - مشخص شود، خروجی در stdout نوشته می‌شود.

-c filename

در صورت تعیین، پیکربندی CCL از فایل داده‌شده خوانده خواهد شد.

-d dump

در صورت تعیین، YAZ داده‌های BER را برای تمام PDUهای ارسالی و دریافتی در فایل‌های جداگانه‌ای با نام dump.DDD.raw ذخیره می‌کند، که در آن DDD برابر با 001، 002، 003 و .. است.

-f cmdfile

دستورها را از cmdfile می‌خواند. هنگام استفاده از این گزینه، کلاینت YAZ فایل .yazclientrc را از پوشه جاری یا پوشه خانگی نمی‌خواند.

-k size

پیام‌های ترجیحی و حداکثر اندازه رکورد برای Initialize Request را به کیلوبایت تنظیم می‌کند. مقدار پیش‌فرض 65536 (۶۴ مگابایت) است.

-m filename

در صورت تعیین، رکوردهای دریافت‌شده به انتهای فایل داده‌شده الحاق خواهند شد.

-p proxy-addr

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

-q filename

در صورت تعیین، پیکربندی CQL از فایل داده‌شده خوانده خواهد شد.

-t displaycharset

در صورت تعیین displaycharset، این مقدار نام مجموعه نویسه‌های خروجی را (در ترمینالی که کلاینت YAZ در آن اجرا می‌شود) تعیین می‌کند.

-u auth

در صورت تعیین، رشته auth برای احراز هویت به کار خواهد رفت.

-v level

سطح LOG را به level تنظیم می‌کند. مقدار level دنباله‌ای از نشانه‌ها است که با کاما از یکدیگر جدا شده‌اند. هر نشانه یک عدد صحیح یا یکی از شناسه‌های نام‌گذاری‌شده LOG است - شامل fatal، debug، warn، log، malloc، all، none.

-V

نسخه YAZ را نمایش می‌دهد.

-x

کلاینت YAZ را وادار می‌کند تا تخلیه هگزادسیمال (hex dump) بسته‌های ارسالی و دریافتی را در خروجی استاندارد چاپ کند.

کلاینت YAZ دستورهای زیر را می‌پذیرد.

open zurl

اتصالی به یک سرور برقرار می‌کند. نحو برای zurl همان‌گونه است که در بالا برای اتصال از خط فرمان شرح داده شد.

نحو:

[(tcp|ssl|unix|http)':']host [:port][/base]

quit

از کلاینت YAZ خارج می‌شود.

find query

یک Search Request را با استفاده از query داده‌شده ارسال می‌کند. به‌طور پیش‌فرض فرض می‌شود که پرس‌وجو از نوع PQF است. برای اطلاعات بیشتر دستور querytype را ببینید.

delete setname

مجموعه‌نتایج با نام setname را روی سرور حذف می‌کند.

base base1 base2 ...

نام(های) پایگاه(های) داده برای جستجو را تعیین می‌کند. یک یا چند پایگاه داده را می‌توان با فاصله از هم مشخص کرد. این دستور بر پایگاه داده مشخص‌شده در zurl اولویت دارد.

show [start[+number [+resultset]]]

با ارسال یک Present Request، رکوردها را از موقعیت شروع تعیین‌شده توسط start و به تعداد رکوردهای ارائه‌شده با number، از مجموعه‌نتایج resultset دریافت می‌کند. اگر start داده نشود، کلاینت رکوردها را از موقعیت آخرین رکورد دریافت‌شده به‌علاوه ۱ واکشی خواهد کرد. اگر number داده نشود، در هر بار یک رکورد واکشی می‌شود. اگر resultset داده نشود، از آخرین مجموعه‌نتایج دریافت‌شده استفاده خواهد شد.

scan term

نمایه پایگاه داده را برای یک اصطلاح پویش می‌کند. نحو آن شبیه نحو find است. اگر می‌خواهید برای واژه water پویش انجام دهید، می‌توانید بنویسید
scan water

اما اگر می‌خواهید تنها در، برای نمونه فیلد عنوان (title) پویش کنید، این‌طور می‌نویسید

scan @attr 1=4 water

setscan set term

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

scanpos pos

موقعیت ترجیحی را برای scan تنظیم می‌کند. این مقدار در پویش بعدی استفاده می‌شود. به‌طور پیش‌فرض، موقعیت ۱ است.

scansize size

تعداد مدخل‌هایی را که باید توسط scan بازگردانده شوند تنظیم می‌کند. تعداد پیش‌فرض مدخل‌ها ۲۰ است.

scanstep step

اندازه گام (step-size) را برای scan تنظیم می‌کند. این مقدار در پویش بعدی ارسال‌شده به مقصد (target) استفاده می‌شود. به‌طور پیش‌فرض اندازه گام ۰ است.

sort sortspecs

یک مجموعه‌نتایج را مرتب‌سازی می‌کند. دستور sort دنباله‌ای از مشخصات مرتب‌سازی جداشده با فاصله را می‌گیرد، به طوری که هر مشخصه مرتب‌سازی از دو کلمه جداشده با فاصله تشکیل شده است (تا کل فهرست مشخصات از تعداد زوجی کلمه تشکیل شود). کلمه اول هر مشخصه شامل یک فیلد (معیار مرتب‌سازی) و کلمه دوم شامل پرچم‌ها است. اگر معیار مرتب‌سازی شامل = باشد، فرض می‌شود که SortKey از نوع sortAttributes با استفاده از Bib-1 است: در این حالت عدد صحیح قبل از = نوع صفت (attribute type) و عدد صحیح بعد از = مقدار صفت (attribute value) است. اگر هیچ نویسه = در معیار نباشد، به عنوان sortfield از نوع InternationalString در نظر گرفته می‌شود. کلمه پرچم‌های هر مشخصه مرتب‌سازی باید شامل s برای حساس به حروف کوچک و بزرگ یا i برای غیرحساس به حروف کوچک و بزرگ، و < برای ترتیب صعودی یا > برای ترتیب نزولی باشد.

مثال با استفاده از معیار مرتب‌سازی دارای صفات use=local-number و structure=numeric و پرچم صعودی: 1=12,4=109 <

مثالی دیگر با فیلد مرتب‌سازی "Title" و پرچم نزولی: Title >

sort+

مشابه sort است اما مجموعه‌نتایج مرتب‌شده را در یک مجموعه‌نتایج جدید ذخیره می‌کند.

authentication [auth1 [auth2 [auth3]]]

رشته‌های احراز هویت ارسالی به سرور را پیکربندی می‌کند. دستور auth می‌تواند صفر، ۱، ۲ یا ۳ آرگومان به همراه داشته باشد.

اگر هیچ (۰) آرگومانی داده نشود، هیچ رشته احراز هویتی ارسال نمی‌شود.

اگر یک آرگومان داده شود، از احراز هویت Z39.50 v2 OpenStyle استفاده می‌شود. یک قرارداد متداول برای رشته auth1 این است که نام کاربری و گذرواژه با یک اسلش از هم جدا شوند، مانند myusername/mysecret.

اگر دو یا چند آرگومان داده شود احراز هویت Z39.50 v3 به کار گرفته می‌شود که در این حالت آرگومان نخست کاربر، آرگومان دوم گروه و آرگومان سوم گذرواژه است. اگر تنها دو آرگومان داده شود، گروه خالی فرض می‌شود.

همانند سایر دستورها در yaz-client، آرگومان‌ها با فاصله‌های سفید (whitespace) از یکدیگر جدا می‌شوند. برای درج یک نویسه به‌صورت عینی (verbatim) می‌توان از یک نویسه بک‌اسلش استفاده کرد. برای نمونه، auth myuser a\ b یک دستور auth با دو آرگومان است که در آن کاربر myuser و گذرواژه a b است.

رشته احراز هویت برای نخستین بار هنگام صدور دستور open و ارسال Z39.50 Initialize Request به سرور فرستاده می‌شود، بنابراین این دستور باید پیش از open استفاده شود تا اثرگذار باشد.

sru method version

روش (method) و نسخه وب‌سرویس را انتخاب می‌کند. باید یکی از post، get، soap (پیش‌فرض) یا solr باشد. نسخه برای SRU باید 1.1، 1.2 یا 2.0 باشد. نسخه‌های دیگر برای مقاصد آزمایشی مجاز هستند (مذاکره بر سر نسخه با سرور SRU). این نسخه در حال حاضر برای وب‌سرویس‌های Solr استفاده نمی‌شود. list_all
این دستور وضعیت و مقادیر مربوط به بسیاری از تنظیمات را نمایش می‌دهد.

lslb n

حد آستانه‌ای را تعیین می‌کند که بر اساس آن نباید هیچ رکوردی به همراه نتیجهٔ جستجو بازگردانده شود. برای جزئیات بیشتر به Z39.50 standard on set bounds[4] مراجعه کنید.

ssub n

حد آستانه‌ای را تعیین می‌کند که بر اساس آن تمام رکوردها باید به همراه نتیجهٔ جستجو بازگردانده شوند. برای جزئیات بیشتر به Z39.50 standard on set bounds[4] مراجعه کنید.

mspn n

تعداد رکوردهایی را تعیین می‌کند که در صورت قرار گرفتن تعداد رکوردهای مجموعهٔ نتایج بین مقادیر lslb و ssub باید بازگردانده شوند. برای جزئیات بیشتر به Z39.50 standard on set bounds[4] مراجعه کنید.

status

مقادیر lslb، ssub و mspn را نمایش می‌دهد.

setname

مجموعه‌نتایج نام‌گذاری‌شده را فعال و غیرفعال می‌کند. مقدار پیش‌فرض on است.

cancel

یک Trigger Resource Control Request به هدف ارسال می‌کند.

facets spec

وجوه (facets) درخواستی برای استفاده در جستجو را مشخص می‌کند. نشانه‌گذاری آن در ??? مشخص شده است.

format oid

ساختار نحوی انتقال (transfer syntax) ترجیحی را برای رکوردهای دریافت‌شده تعیین می‌کند. yaz-client از تمام ساختارهای نحوی رکوردی که در حال حاضر ثبت شده‌اند پشتیبانی می‌کند. برای جزئیات بیشتر به Z39.50 Record Syntax Identifiers[5] مراجعه کنید. ساختارهای نحوی متداول رکورد شامل usmarc، sutrs و xml هستند.

elements e

نام مجموعه عناصر را برای رکوردها تعیین می‌کند. بسیاری از هدف‌ها از مجموعه‌های عناصر B (برای مختصر) و F (برای کامل) پشتیبانی می‌کنند.

close

یک Z39.50 Close APDU ارسال کرده و اتصال با طرف مقابل را می‌بندد.

querytype type

نوع پرس‌وجوی مورد استفاده توسط دستور find را تعیین می‌کند. موارد زیر پشتیبانی می‌شوند: prefix برای Prefix Query Notation (پرس‌وجوی Type-1)؛ ccl برای جستجوی CCL (پرس‌وجوی Type-2)، cql برای CQL (جستجوی Type-104 با CQL OID)، ccl2rpn برای تبدیل CCL به RPN (پرس‌وجوی Type-1)، cql2rpn برای تبدیل CQL به RPN (پرس‌وجوی Type-1).

attributeset set

شناسه OID مجموعه مشخصه‌ها (attribute set) را برای پرس‌وجوهای پیشوندی (RPN، Type-1) تنظیم می‌کند.

refid id

شناسه مرجع (reference ID) را برای درخواست‌های Z39.50 تنظیم می‌کند.

itemorder type no

یک Item Order Request را با استفاده از ILL External ارسال می‌کند. type یا 1 یا 2 است که به ترتیب متناظر با ILL-Profile 1 و 2 است. no موقعیت رکورد مورد نظر برای سفارش در مجموعه نتایج است.

update action recid doc

یک Item Update Request ارسال می‌کند. آرگومان action باید نوع عملیات باشد: یکی از insert، replace، delete و update. آرگومان دوم، recid، شناسهٔ رکورد است (هر رشته‌ای). آرگومان سوم که اختیاری است، سند رکورد برای درخواست می‌باشد. اگر doc با "<" آغاز شود، نویسه‌های بعدی به عنوان نام فایلی شامل رکوردهای مورد نظر برای به‌روزرسانی در نظر گرفته می‌شوند. در غیر این صورت doc به عنوان خود سند تلقی می‌شود. سند همچنین می‌تواند درون گیومه دوتایی قرار گیرد. اگر doc حذف شود، آخرین رکورد دریافت‌شده (به عنوان بخشی از پاسخ present یا پاسخ جستجوی piggyback شده) برای به‌روزرسانی استفاده می‌شود.

source filename

فهرستی از دستورها را از فایل filename اجرا می‌کند، درست مانند 'source' در اکثر پوسته‌های یونیکس. یک نقطه منفرد (.) نیز می‌تواند به عنوان جایگزین استفاده شود.

! args

دستور args را در زیرپوسته با استفاده از فراخوانی system اجرا می‌کند.

push_command command

دستور push_command یک دستور دیگر را به عنوان آرگومان دریافت می‌کند. سپس آن دستور به اطلاعات تاریخچه اضافه می‌شود (تا بعداً بتوانید آن را بازیابی کنید). خود دستور اجرا نمی‌شود. این دستور تنها زمانی کار می‌کند که GNU readline/history فعال باشد.

set_apdufile filename

تعیین می‌کند که APDU باید در فایل filename ثبت شود. روش دیگر برای ثبت گزارش‌های APDU استفاده از گزینه خط فرمان -a است.

set_auto_reconnect flag

مشخص می‌کند که آیا کارخواه YAZ در صورت قطع ارتباط توسط هدف، به‌طور خودکار دوباره متصل شود یا خیر (تنها برای Z39.50).

flag باید on یا off باشد.

set_auto_wait flag

مشخص می‌کند که آیا کارخواه YAZ باید پس از یک درخواست منتظر بسته‌های پروتکل پاسخ بماند یا خیر. به‌طور پیش‌فرض کارخواه YAZ بلافاصله پس از صدور یک دستور (find، show) منتظر بسته‌های پاسخ می‌ماند (on). اگر از off استفاده شود، کارخواه YAZ تلاشی برای دریافت خودکار بسته‌ها نمی‌کند. این بسته‌ها باید در زمان استفاده از دستور wait_response به‌صورت دستی دریافت شوند.

flag باید on یا off باشد.

set_marcdump filename

تعیین می‌کند که تمام رکوردهای دریافت‌شده باید به انتهای فایل filename پیوست شوند. این دستور عملکردی مشابه با گزینه -m دارد. schema schemaid
طرح‌واره (schema) را برای بازیابی تعیین می‌کند. طرح‌واره برای Z39.50 می‌تواند به صورت یک OID مشخص شود. برای SRU، طرح‌واره یک رشته ساده URI است.

charset negotiationcharset [displaycharset] [[marccharset]]

مجموعه نویسه (کدگذاری) را برای مذاکره Z39.50 / کدگذاری SRU و/یا مجموعه نویسه خروجی (ترمینال) تعیین می‌کند.

negotiationcharset نام مجموعه نویسه‌ای است که باید با کارساز مذاکره شود. نام ویژه - برای negotiationcharset مشخص می‌کند که هیچ مجموعه نویسه‌ای نباید مذاکره شود.

اگر displaycharset داده شود، نام مجموعه نویسه خروجی (روی ترمینالی که YAZ client در حال اجرا است) را مشخص می‌کند. برای غیرفعال کردن تبدیل نویسه‌ها به کدگذاری خروجی، می‌توان از نام ویژه - (خط پیوند) استفاده کرد. اگر نام ویژه auto داده شود، YAZ client رشته‌ها را به کدگذاری ترمینال همان‌گونه که با فراخوانی nl_langinfo بازگردانده شده، تبدیل می‌کند.

اگر marccharset داده شود، نام مجموعه نویسه رکوردهای MARC دریافت‌شده از کارساز را مشخص می‌کند. همچنین دستور marccharset را ببینید.


نکته
از آنجا که مذاکره مجموعه نویسه در Initialize Request مربوط به Z39.50 اعمال می‌شود، باید این دستور را پیش از استفاده از دستور open اجرا کنید.

نکته
رکوردهای MARC تحت پوشش مذاکره مجموعه نویسه Z39.50 قرار نمی‌گیرند، به همین دلیل مجموعه نویسه جداگانه‌ای وجود دارد که برای انجام تبدیل(های) معنادار باید مشخص باشد.

negcharset charset

مجموعه نویسه را برای مذاکره (Z39.50) تعیین می‌کند. این آرگومان مانند آرگومان دوم دستور charset است.

displaycharset charset

مجموعه نویسه را برای خروجی (نمایش) تعیین می‌کند. این آرگومان مانند آرگومان دوم دستور charset است.

marccharset charset

مجموعه نویسه را برای رکوردهای MARC دریافت‌شده تعیین می‌کند تا YAZ client بتواند آن‌ها را در مجموعه‌نویسه‌ای مناسب برای نمایشگر شما نشان دهد. دستور charset را ببینید. اگر auto داده شود، YAZ فرض خواهد کرد که MARC21/USMARC از MARC8/UTF8 و سایر گونه‌های MARC از ISO-8859-1 استفاده می‌کنند. آرگومان charset مانند آرگومان سوم برای دستور charset است.

querycharset charset

مجموعه نویسه را برای عبارت‌های پرس‌وجو در پرس‌وجوهای RPN مربوط به Z39.50 و درخواست‌های Scan مربوط به Z39.50 (در termListAndStartPoint) تعیین می‌کند. این یک تبدیل کاملاً سمت کلاینت است که از displayCharset به queryCharset تبدیل می‌کند.

set_cclfile filename

مشخص می‌کند که فیلدهای CCL باید از فایل filename خوانده شوند. این دستور همان عملکرد گزینه -c را دارد.

set_cqlfile filename

مشخص می‌کند که فیلدهای CQL باید از فایل filename خوانده شوند. این دستور همان عملکرد گزینه -q را دارد.

register_oid name class OID

این دستور به شما امکان می‌دهد شناسه شیء (OID) اختصاصی خود را ثبت کنید - به طوری که به‌جای وارد کردن یک عبارت طولانی نقطه‌دار، بتوانید از یک نام کوتاه استفاده کنید. name نام شما برای OID است، class کلاس مربوطه است و OID همان OID خام در نمادگذاری نقطه‌ای است. کلاس یکی از موارد زیر است: appctx, absyn, attet, transyn, diagset, recsyn, resform, accform, extserv, userinfo, elemspec, varset, schema, tagset, general. اگر تردید دارید از کلاس general استفاده کنید.

register_tab command string

این دستور یک رشته برای تکمیل خودکار با TAB برای دستور داده‌شده ثبت می‌کند.

sleep seconds

این دستور باعث می‌شود YAZ client به مدت ثانیه‌های تعیین‌شده به خواب برود (بیکار بماند).

wait_response [ number]

این دستور باعث می‌شود YAZ client برای تعداد مشخصی از بسته‌های پاسخ از هدف منتظر بماند. اگر number حذف شود، مقدار ۱ فرض می‌شود.

این دستور به‌ندرت استفاده می‌شود و تنها زمانی مفید است که دستور set_auto_wait روی off تنظیم شده باشد.

xmles OID doc

یک درخواست XML Extended Services را با استفاده از OID و doc داده‌شده ارسال می‌کند.

zversion ver

این دستور نسخه Z39.50 را برای مذاکره تنظیم می‌کند. باید پیش از open استفاده شود. به‌طور پیش‌فرض از 3 (نسخه ۳) استفاده می‌شود.

options op1 op2..

این دستور گزینه‌های Z39.50 را برای مذاکره تنظیم می‌کند. باید پیش از open استفاده شود.

گزینه‌های زیر پشتیبانی می‌شوند: search, present, delSet, resourceReport, triggerResourceCtrl, resourceCtrl, accessCtrl, scan, sort, extendedServices, level_1Segmentation, level_2Segmentation, concurrentOperations, namedResultSets, encapsulation, resultCount, negotiationModel, duplicationDetection, queryType104, pQESCorrection, stringSchema.

ساده‌ترین مثال از یک پرس‌وجوی پیشوندی (Prefix Query) چیزی شبیه به این خواهد بود:

f knuth

یا

f "donald knuth"

در این پرس‌وجوها، هیچ مشخصه‌ای (attribute) تعیین نشده است. این امر تعیین فیلدهای مورد جستجو را به عهده سرور می‌گذارد، اما بیشتر سرورها در تمام فیلدها جستجو خواهند کرد. با این حال، برخی از سرورها از این قابلیت پشتیبانی نمی‌کنند و نیاز دارند که برخی مشخصه‌ها تعریف شوند. برای افزودن یک مشخصه می‌توانید این کار را انجام دهید:

f @attr 1=4 computer

که در آن در فیلد عنوان (title) جستجو می‌کنیم، زیرا use(1) برابر با title(4) است. اگر بخواهیم در فیلد نویسنده و در فیلد عنوان، و در فیلد عنوان با استفاده از برش از راست (right truncation) جستجو کنیم، می‌تواند چیزی شبیه به این باشد:

f @and @attr 1=1003 knuth @attr 1=4 @attr 5=1 computer

در نهایت، استفاده از ترکیبی از مشخصه‌های Bib-1 و GILS می‌تواند شبیه به این باشد:

f @attrset Bib-1 @and @attr GILS 1=2008 Washington @attr 1=21 weather

yaz-<version>/client/client.c

$HOME/.yazclientrc

$HOME/.yazclient.history

yaz(7) bib1-attr(7).SH "نویسندگان (AUTHORS)"

Index Data

1.
Z39.50
2.
SRU
3.
Solr
4.
استاندارد Z39.50 دربارهٔ مرزهای مجموعه (set bounds)
5.
شناسه‌های نحو رکورد Z39.50
05/20/2026 YAZ 5.37.3