سؤال

أحتاج إلى تحميل الأنطولوجيا الكبيرة جدًا الممثلة كملف N-Triples (1 جيجابايت) على تطبيق Sesame OpenRDF. أنا أستخدم واجهة Workbench للقيام بذلك. أعلم أن هذا الملف كبير جدًا بحيث لا يمكن تحميله في طلب واحد. للتغلب على ذلك ، قمت بتقسيم ملفاتي في ملفات بحجم 100 ميجابايت. لكن ما زلت أتلقى خطأً خادم Sesame OpenRDF:

HTTP ERROR 500

Problem accessing /openrdf-workbench/repositories/business/add. Reason:

    Unbuffered entity enclosing request can not be repeated.
Caused by:

org.apache.commons.httpclient.ProtocolException: Unbuffered entity enclosing request can not be repeated.
 at org.apache.commons.httpclient.methods.EntityEnclosingMethod.writeRequestBody(EntityEnclosingMethod.java:487)

هل لدى أي شخص معرفة جيدة بـ OpenRDF Sesame أو مديرة الأنطولوجيا الأخرى التي يمكنني استخدامها لمهمتي؟

شكرا جزيلا على مدخلاتك

ك.

هل كانت مفيدة؟

المحلول

إن طاولة عمل السمسم ليست في الحقيقة الأداة المثالية لهذه الأنواع من المهام - على الرغم من أنني أتوقع أن تكون قادرة على التعامل مع ملفات 100 ميغابايت. قد يكون Tomcat الذي تديره Sesame لديه مجموعة حد نشر؟ يمكنك أن تسأل حول القائمة البريدية لـ Sesame ، فهناك عدد قليل جدًا من الأشخاص ذوي المعرفة هناك أيضًا. ولكن فيما يلي فكرتان محتملان لإنجاز الأمور:

تتمثل إحدى طرق التعامل مع ذلك في القيام بتحميلك برمجيًا ، باستخدام API لمستودع Sesame. إلقاء نظرة على وثائق المستخدم على موقع السمسم لأمثلة رمز.

بدلاً من ذلك ، إذا كنت تستخدم متجر Sesame الأصلي ، فيمكنك القيام بحلول "قذرة" باستخدام وحدة تحكم سطر أوامر Sesame: قم بإنشاء متجر ثلاثي محلي محلي وتحميل بياناتك إلى هذا المتجر المحلي (يجب أن يكون هذا أسرع بكثير لأنه لا يوجد اتصال HTTP من الضروري). بعد ذلك ، قم بإيقاف تشغيل خادم Sesame الخاص بك ، ونسخ ملفات البيانات الخاصة بالمخزن الأصلي المحلي عبر ملفات بيانات المتجر في الخادم الخاص بك ، وإعادة التشغيل.

نصائح أخرى

كان لي نفس المشكلة. عندما حاولت تحميل RDF "كبير" (حوالي 40 ميجابايت) ، فشلت عملية التحميل مع الخطأ:

لا يمكن تكرار الطلب غير المرفق المرفق.

أحاول أخرى من Tomcat وأيضًا السمسم ولكن دون نجاح. ثم أحاول استخدام وحدة التحكم في السمسم والمستودع المحلي (وليس مضيفًا محليًا على خادم Tomcat - كما يقول Jeen في إجابة أخرى) يظهر لي خطأً آخر:

وثيقة مشوهة: JAXP00010001: واجه المحلل أكثر من توسعات كيان "64000" في هذا المستند ؛ هذا هو الحد الذي يفرضه JDK. [السطر 1 ، العمود 1

لذلك أعتقد أن الخطأ حول حد الكيان مغطى في مكان ما في Tomcat عن طريق الخطأ حول الكيان المحمص.

ثم وجدت هذا الموضوع ما الذي يسبب استثناءات parseerror هذه عند قراءة قائمة انتظار AWS SQS في مجموعة العاصفة الخاصة بي وأضف هذا البيان قبل بدء Tomcat:

export JAVA_OPTS="${JAVA_OPTS} -Djdk.xml.entityExpansionLimit=0"

يعطّل هذا البيان حد الكيان في محلل XML (الافتراضي هو 64000 كما تقول رسالة خطأ). بعد هذه الخطوة ، من الممكن تحميل RDF "كبير" (تم اختباره على 40-800 ميجابايت).

لا أعرف بالضبط المهمة التي تأمل في تحقيقها ، ولكن قد ترغب في التحقق هنا للحصول على قائمة من المتاجر الثلاثية القابلة للتطوير مع نتائج قابلية التوسع غير الرسمية (المدعومة ذاتيا). في هذا ، تقارير السمسم فقط تتعامل مع بيانات 70 مترًا (ليس الكثير ... قد يكون سبب مشاكلك.)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top