Entity Node هي حزمة ثابتة الطول بحجم 4 كلمات (64 بت) تُعرّف الكيانات (أشخاص، أماكن، أشياء، منظمات، مفاهيم، إلخ) في تدفق GEUL.

جوهر SIDX

الخاصيةالوصف
Non-uniqueيمكن لعدة كيانات أن تتشارك نفس SIDX
Multi-SIDXيمكن لكيان واحد أن يملك عدة SIDX (حسب الزمن/الدور)
بت = معنىموضع البت ذاته يدل على السمة
تدرج مجرد/ملموسيُحدَّد بواسطة Mode ومدى امتلاء Attributes

أمثلة:

  • ترامب (رجل أعمال عقاري) → SIDX_A
  • ترامب (رئيس) → SIDX_B (SIDX مختلف)
  • “Human + Male + Saudi” → “رجل سعودي” تجريدي
  • “Human + Male + Saudi + 1946 + Business + …” → يقترب من شخص محدد

مبادئ التصميم

التخلي عن تضمين Q-ID:

  • استثمار جميع البتات في المحاذاة الدلالية الصرفة
  • تعظيم أداء ترشيح WMS SIMD
  • يُربط Q-ID عبر الثلاثيات بشكل منفصل: (Entity_SIDX, P-ExternalID, "Q12345")

عدم الحاجة لبتات Serial:

  • استعلام WMS يعمل على مرحلتين: تضييق النطاق بـ SIMD → فحص التفاصيل داخل النطاق
  • Serial رقم بلا معنى لا يساهم في SIMD
  • استثمار تلك البتات في المحاذاة الدلالية يضيّق النطاق أكثر في المرحلة الأولى

مخطط البتات (4 كلمات = 64 بت)

1st WORD (16 bits)
┌─────────┬──────┬────────────┐
│ Prefix  │ Mode │ EntityType │
│  7bit   │ 3bit │   6bit     │
└─────────┴──────┴────────────┘

2nd WORD (16 bits)
┌─────────────────────────────┐
│   Attributes upper 16 bits  │
└─────────────────────────────┘

3rd WORD (16 bits)
┌─────────────────────────────┐
│   Attributes middle 16 bits │
└─────────────────────────────┘

4th WORD (16 bits)
┌─────────────────────────────┐
│   Attributes lower 16 bits  │
└─────────────────────────────┘
الحقلالبتاتالحجمالوصف
Prefix1-770001001 (Entity Node)
Mode8-1038 أوضاع تحديد/عدد
EntityType11-16664 نوعاً علوياً
Attributes17-6448مخطط متغير حسب النوع

Mode (3 بتات)

يعبّر Mode عن التحديد (Quantification) والعدد (Number) بشكل موحد في 3 بتات.

الرمزثنائيالمعنىمثال
0000كيان مسجلالملك سلمان، أرامكو، BTS
1001معرّف مفرد“ذلك الشخص”
2010معرّف قلة“أولئك القلة”
3011معرّف جمع“أولئك الأشخاص”
4100شامل“كل ~”
5101وجودي“بعض ~”
6110غير محدد“أي ~”
7111عام“~ بشكل عام”

كيان مسجل (Mode=0)

  • كيان مربوط بمعرّف خارجي مثل Q-ID في ويكي بيانات أو Synset في WordNet
  • يُربط Q-ID عبر الثلاثيات: (Entity_SIDX, P-ExternalID, "Q12345")
  • لا علاقة بمفهوم العدد: أرامكو “واحدة” لكن يصعب وصفها بالمفرد، BTS مجموعة لكنها كيان واحد

ضمائر/تجريد (Mode=1~7)

  • يُحدَّد نطاق المعنى بواسطة EntityType + Attributes
  • كلما امتلأت البتات أكثر، ازدادت الخصوصية
  • مثال: Human(Type) + Male(Attr) + SaudiArabia(Attr) = “رجل سعودي”

EntityType (6 بتات = 64 نوعاً)

يُخصَّص 64 نوعاً علوياً استناداً إلى إحصائيات تكرار P31 (instance of) في ويكي بيانات. التصنيف التفصيلي يُعالَج عبر بتات التصنيف الفرعي داخل Attributes.

النطاقالفئةعدد الأنواعأنواع تمثيلية
0x00-0x07كائنات/أشخاص8Human, Taxon, Gene, Protein
0x08-0x0Bكيمياء/مواد4Chemical, Compound, Mineral, Drug
0x0C-0x13أجرام سماوية8Star, Galaxy, Asteroid, Planet
0x14-0x1Bتضاريس/طبيعة8Mountain, River, Lake, Island
0x1C-0x23أماكن/إدارية8Settlement, Village, Street, Park
0x24-0x2Bمبانٍ8Building, Church, School, Bridge
0x2C-0x2Fمنظمات4Organization, Business, PoliticalParty
0x30-0x3Bأعمال إبداعية12Painting, Document, Film, Album
0x3C-0x3Fأحداث/أخرى4SportsSeason, Event, Election, Other

جدول الرموز (64 كاملة)

الرمزالنوعQ-IDعدد الكيانات
0x00HumanQ512.5M
0x01TaxonQ165213.8M
0x02GeneQ71871.2M
0x03ProteinQ80541.0M
0x04CellLineQ21014462154K
0x05FamilyNameQ101352662K
0x06GivenNameQ202444128K
0x07FictionalCharacterQ1563261798K
0x08ChemicalQ1131451711.3M
0x09CompoundQ111731.1M
0x0AMineralQ794662K
0x0BDrugQ1214045K
0x0CStarQ5233.6M
0x0DGalaxyQ3182.1M
0x0EAsteroidQ3863249K
0x0FQuasarQ83373178K
0x10PlanetQ63415K
0x11NebulaQ120578K
0x12StarClusterQ1688455K
0x13MoonQ25373K
0x14MountainQ8502518K
0x15HillQ54050321K
0x16RiverQ4022427K
0x17LakeQ23397292K
0x18StreamQ47521194K
0x19IslandQ23442153K
0x1ABayQ3959425K
0x1BCaveQ3550920K
0x1CSettlementQ486972580K
0x1DVillageQ532245K
0x1EHamletQ5084148K
0x1FStreetQ79007711K
0x20CemeteryQ39614298K
0x21AdminRegionQ15284100K
0x22ParkQ2269845K
0x23ProtectedAreaQ47397235K
0x24BuildingQ41176292K
0x25ChurchQ16970286K
0x26SchoolQ9842242K
0x27HouseQ3947235K
0x28StructureQ811979216K
0x29SportsVenueQ1076486145K
0x2ACastleQ2341342K
0x2BBridgeQ1228038K
0x2COrganizationQ43229531K
0x2DBusinessQ4830453242K
0x2EPoliticalPartyQ727835K
0x2FSportsTeamQ84701795K
0x30PaintingQ33052131.1M
0x31DocumentQ4984845M
0x32LiteraryWorkQ7725634395K
0x33FilmQ11424335K
0x34AlbumQ482994303K
0x35MusicalWorkQ105543609195K
0x36TVEpisodeQ21191270177K
0x37VideoGameQ7889172K
0x38TVSeriesQ539842685K
0x39PatentQ43305660289K
0x3ASoftwareQ739713K
0x3BWebsiteQ3512712K
0x3CSportsSeasonQ27020041183K
0x3DEventQ165668210K
0x3EElectionQ4023111K
0x3FOther-للتوسيع

Attributes (48 بت)

مخطط متغير حسب النوع يُفسَّر بمعانٍ مختلفة لكل EntityType. تُخصَّص بتات أكثر للسمات عالية التكرار، وتُستخدم مباشرة في ترشيح WMS SIMD.

Human (0x00) Attributes

┌──────────┬────────┬────────┬──────┬────────┬────────┬─────────┬──────────┬────────────┬──────────┐
│ SubType  │  Job   │ Nation │  Era │ Decade │ Gender │  Fame   │ Language │ BirthArea  │  Field   │
│  5bit    │  6bit  │  8bit  │ 4bit │  4bit  │  2bit  │  3bit   │  6bit    │   6bit     │   4bit   │
└──────────┴────────┴────────┴──────┴────────┴────────┴─────────┴──────────┴────────────┴──────────┘
offset:  0        5       11      19     23      27      29        32         38          44

Star (0x0C) Attributes

┌────────────┬────────────┬──────────┬──────────┬────────┬────────┬──────────┬──────────┬────────┬────────┐
│ Constell.  │  Spectral  │ LumClass │ AppMag   │   RA   │  Dec   │  Flags   │ RadVel   │Redshift│Parallax│
│   7bit     │    4bit    │   3bit   │  4bit    │  4bit  │  4bit  │   6bit   │   5bit   │  5bit  │  4bit  │
└────────────┴────────────┴──────────┴──────────┴────────┴────────┴──────────┴──────────┴────────┴────────┘

تعريف بتات الأعلام:

  • bit0: IR (مصدر أشعة تحت حمراء)
  • bit1: Radio (مصدر موجات راديو)
  • bit2: X-ray (مصدر أشعة سينية)
  • bit3: Binary (نجم ثنائي)
  • bit4: Variable (نجم متغير)
  • bit5: HighPM (حركة ذاتية عالية)

العمليات

إنشاء Entity

def make_entity(
    mode: int,           # 3 bits
    entity_type: int,    # 6 bits
    attrs: int           # 48 bits
) -> bytes:
    PREFIX = 0b0001001   # 7 bits (Entity Node)

    word1 = (PREFIX << 9) | (mode << 6) | entity_type
    word2 = (attrs >> 32) & 0xFFFF
    word3 = (attrs >> 16) & 0xFFFF
    word4 = attrs & 0xFFFF

    return (
        word1.to_bytes(2, 'big') +
        word2.to_bytes(2, 'big') +
        word3.to_bytes(2, 'big') +
        word4.to_bytes(2, 'big')
    )

تحليل Entity

def parse_entity(data: bytes) -> dict:
    word1 = int.from_bytes(data[0:2], 'big')
    word2 = int.from_bytes(data[2:4], 'big')
    word3 = int.from_bytes(data[4:6], 'big')
    word4 = int.from_bytes(data[6:8], 'big')

    prefix = (word1 >> 9) & 0x7F
    mode = (word1 >> 6) & 0x7
    entity_type = word1 & 0x3F
    attrs = (word2 << 32) | (word3 << 16) | word4

    return {
        'prefix': prefix,
        'mode': mode,
        'entity_type': entity_type,
        'attrs': attrs
    }

أمثلة

كيان مسجل: صلاح الدين

# صلاح الدين (Q188589)
saladin = make_entity(
    mode=0,              # كيان مسجل
    entity_type=0x00,    # Human
    attrs=(
        (0x06 << 43) |   # SubType: Military
        (0x01 << 37) |   # Job: Commander
        (0x52 << 29) |   # Nation: Egypt/Syria
        (0x5 << 25) |    # Era: Medieval
        (0x0 << 21) |    # Decade: 1130s
        (0x01 << 19) |   # Gender: Male
        (0x7 << 16)      # Fame: 1000+
    )
)
# ربط Q-ID: Triple(saladin_SIDX, P-ExternalID, "Q188589")

تجريد: “كل رجل سعودي”

all_saudi_men = make_entity(
    mode=4,              # شامل (كل)
    entity_type=0x00,    # Human
    attrs=(
        (0x52 << 29) |   # Nation: Saudi Arabia
        (0x01 << 19)     # Gender: Male
    )
)

ربط الأنواع الفرعية

كثير من أنواع ويكي بيانات هي أنواع فرعية لـ 64 EntityType. يقوم المشفّر بقراءة قيمة P31 وتوجيهها للنوع العلوي المناسب.

النوع الفرعي (P31)النوع العلويعدد الكيانات
Q13442814 (scholarly article)Document (0x31)45.2M
Q67206691 (infrared source)Star (0x0C)2.6M
Q13100073 (village of China)Village (0x1D)592K

التغطية

العنصرالقيمة
إجمالي كيانات ويكي بيانات117,419,925
Wikimedia داخلية (مستبعدة)8,565,353 (7.3%)
هدف SIDX108,854,572 (92.7%)
تغطية مباشرة بـ 64 نوعاً36,295,074 (33.3%)
استيعاب الأنواع الفرعية71,842,429 (66.0%)
الرجوع إلى Other717,069 (0.7%)
التغطية النهائية100%
نسبة التصادم< 0.01%

ربط Q-ID

لا تتضمن Entity Node معرّف Q-ID بشكل مباشر، بل يُربط عبر حافة الثلاثية بشكل منفصل.

Subject:  Entity_SIDX (64 bits)
Property: P-ExternalID (e.g. P-Wikidata)
Object:   "Q12345" (string or integer)