لقد تم تكليفك بالعمل على قاعدة تعليمات برمجية تتعامل مع الإسقاطات في النظام. يُظهر مقتطف التعليمات البرمجية المقدم إنشاء مثيل لكائن `Projection` وإنشاء مخطط باستخدام فئة `DefaultSchema`. يتم استخدام المخطط لتحديد بنية وخصائص الإسقاط.

مهمتك هي تنفيذ وظيفة تتحقق مما إذا كان مخطط الإسقاط المحدد صالحًا. يجب أن تعرض الدالة "صحيح" إذا كان المخطط صالحًا، و"خطأ" بخلاف ذلك. يجب أن يستوفي المخطط الصالح الشروط التالية:
- يجب أن يكون المخطط مثيلاً لـ `DefaultSchema`.
- يجب أن تكون سمة "الخصائص_الاختيارية" للمخطط عبارة عن قائمة تحتوي على عنصر واحد على الأقل.
- يجب أن تحتوي قائمة "الخصائص_الاختيارية" على سلاسل فقط.
- يجب ألا تكون السلاسل الموجودة في قائمة "الخصائص_الاختيارية" فارغة.

اكتب دالة `validate_projection_schema(projection_schema)` تأخذ كائن `projection_schema` كمدخل وترجع `True` إذا كان المخطط صالحًا، و`False` بخلاف ذلك.

توقيع الوظيفة: `def validate_projection_schema(projection_schema) -> bool:`

**مدخل**
- `projection_schema` (0 <= len(projection_schema) <= 10^5): كائن مخطط يمثل الإسقاط.

**انتاج**
- إرجاع "صحيح" إذا كان "مخطط_الإسقاط" صالحًا وفقًا للشروط الموضحة أعلاه، وإرجاع "خطأ" بخلاف ذلك.

**ملحوظة**
- يمكنك افتراض أن فئتي "Projection" و"DefaultSchema" قد تم تعريفهما بالفعل ويمكن استخدامهما.
- مقتطف الشفرة المقدم هو للإشارة فقط ولا يحتاج إلى استخدامه أو تعديله في الحل الخاص بك.
{"evolved_from": null, "kind": "synthetic", "source": "argilla/DistiCoder-dpo-binarized"}