2017-02-20 2 views
1

Zu schlechte Dokumentation macht mich verrückt in MediaWiki und semantische MediaWiki. Was bedeutet Spaltenunterobjekt in smw_object_ids? Wie kann ich etwas finden, das sich auf die Aufzeichnung bezieht, die etwas wie _QUERYgjdfghjsag9u05sdfa in der oben angegebenen Spalte speichert?So finden Sie verwandte Einträge in SMW nach Wert im Unterobjekt Feld

EDIT

Und was soll smw_proptable_hash Daten halten? Wenn ich unserialize sehe ich:

array (
    'smw_di_number' => '3acec8ed7529527ac33713b1668f31c2', 
    'smw_di_blob' => 'c201d67c4b8317d31b05d38d796671d2', 
    'smw_di_time' => 'eff3878694d4aee1e88eb979bbd30097', 
    'smw_di_wikipage' => 'e474079e8c5fab4ec7197d6aaa884032', 
    'smw_fpt_ask' => 'e721ae2cb8f49309e10a27467306644c', 
    'smw_fpt_inst' => 'c7af3f2c8f2f5276c1284b3855358979', 
    'smw_fpt_sobj' => '7fe51e1a5b9c41d770d3dd8b1e1a16fa', 
    'smw_fpt_mdat' => 'a400d86be3f69fbb788c4cfcdddaf077', 
    'smw_fpt_cdat' => 'd063996afa76760ea758a1ab13deb191', 
) 

Aber keiner von ihnen kann ich nicht in angegebenen Tabellen finden.

Antwort

1

Nun, ich glaube, Sie sollten keine rohen SQL-Abfragen durchführen, um semantische Daten zu durchsuchen, weil SMW bereits Klassen und Methoden dafür hat. Obwohl sie kaum dokumentiert sind, müssen Sie nach Quellen suchen, um zu verstehen, wie sie funktioniert und wie Sie sie richtig einsetzen.

Sie können ein Beispiel finden, indem Sie Quellen von SemanticQueryInterface betrachten oder da es Unterobjekte unterstützt, können Sie es einfach in Ihrem Code verwenden.

+0

War wenig hilfreich. Aber jetzt habe ich noch eine andere entgegengesetzte Frage: – Velaro

+0

Wie Hashes in der oben genannten Tabelle hinzugefügt werden? Um genau zu sein, ich habe eine Seite, die LastmodifiedBy smwproperty nicht anzeigt. Nach dem Debugging stellte ich fest, dass es nicht angezeigt wird, weil sich die Lastmodified-Eigenschaft in smw_di_blob befindet, die in der Hash-Liste nicht vorhanden ist. – Velaro

+0

@Velaro Ich glaube, nur der Schöpfer von SMW kennt all diese Details, also denke ich, dass es viel einfacher wäre, wenn Sie das Problem beschreiben könnten, das Sie zu lösen versuchen, vielleicht ist es nicht nötig, SQL dafür zu verwenden. – wakalaka

0

Nach Quellcode

[`extensions/SemanticMediaWiki/includes/storage/SQLStore/SMW_SQLStore3_Writers.php:462 - preparePropertyTableUpdates`] 

Hashes erzeugt wird, wie folgt:

$newHash = md5(serialize(array_values($newData[$tableName]))); 

als Beispiel $ newData

Array 
(
    [smw_fpt_cdat] => Array 
     (
      [0] => Array 
       (
        [s_id] => 2281824 
        [o_serialized] => 1/2017/3/22/13/26/37 
        [o_sortkey] => 2457835.0601505 
       ) 

     ) 

    [smw_fpt_mdat] => Array 
     (
      [0] => Array 
       (
        [s_id] => 2281824 
        [o_serialized] => 1/2017/3/22/13/26/37 
        [o_sortkey] => 2457835.0601505 
       ) 

     ) 

    [smw_di_wikipage] => Array 
     (
      [0] => Array 
       (
        [s_id] => 2281824 
        [p_id] => 754161 
        [o_id] => 2215135 
       ) 

      [1] => Array 
       (
        [s_id] => 2281824 
        [p_id] => 754162 
        [o_id] => 2215135 
       ) 

     ) 

    [smw_di_number] => Array 
     (
      [0] => Array 
       (
        [s_id] => 2281824 
        [p_id] => 754163 
        [o_serialized] => 1 
        [o_sortkey] => 1 
       ) 

      [1] => Array 
       (
        [s_id] => 2281824 
        [p_id] => 754164 
        [o_serialized] => 157470 
        [o_sortkey] => 157470 
       ) 

      [2] => Array 
       (
        [s_id] => 2281824 
        [p_id] => 754165 
        [o_serialized] => 638908 
        [o_sortkey] => 638908 
       ) 

     ) 

) 

Dann werden kann, wird dieses Material wie erwähnt aktualisiert in [Erweiterungen/SemanticMediaWiki/enthält/Speicher/SQLStore/SMW_SQLS tore3_Writers.php: 611 - writePropertyTableRowUpdates]

== fortgesetzt bald sein ==

0

Bitte die Diskussion auf https://www.semantic-mediawiki.org/wiki/Architecture_Tradeoffs

Die aufgerufen SMW_TRIPLES sehen und SWM_TRIPLES_NS gibt Sie zum Subjekt, Prädikat zuzugreifen, Objekt und Typ der in SQLStore3 gespeicherten Tripel.

Die Funktionsweise zeigt, wie die allgemeine Struktur der SQLStore3-Datenbank Elemente verknüpft.

jetzt sind Sie speziell für den Tisch zu fragen smw_object_ids

, die die folgenden Spalten:

Field    Type   Null Key Default Extra 
smw_id    int(8) unsigned NO PRI (null) auto_increment 
smw_namespace  int(11)   NO   (null) 
smw_title   varbinary(255) NO MUL (null) 
smw_iw    varbinary(32) NO   (null) 
smw_subobject  varbinary(255) NO   (null) 
smw_sortkey   varbinary(255) NO MUL (null) 
smw_proptable_hash mediumblob  YES   (null) 

der Lage sein, den Inhalt der varbinaries anzuzeigen ein gegossenes zum Beispiel verwenden möchten wie

select smw_id as id, cast(smw_subobject as char) as subobject,cast(smw_title as char) 
as title 
from smw_object_ids 
where length(smw_subobject)>0 

Jetzt werden Sie, dass subobject sehen einen internen Hash-Code, der auf den Seitentitel angehängt wird, die Subobjekte identifizierbar innerhalb einer Seite zu machen.Hier

ist ein Beispiel für Seite mit dem Namen „HammerUndSichel“, die vier Subobjekte haben:

id  subobject       title 
91147 _0a12ff61e3b10c31478f2ff62b49e68e HammerUndSichel 
91149 _52193085936ccfee4bc197ce37614073 HammerUndSichel 
91207 _7fba483328e69e6aeb6dff0fc74447f4 HammerUndSichel 
91148 _838fe1bff8f83dbfa40fb3314c47677b HammerUndSichel 

Für den internen Speicher der Spalte „ID“ verwendet wird und die subobject Spalte kommt nicht ins Spiel noch. Das Problem beginnt erst, wenn Sie eine umgekehrte Suche durchführen möchten. Z.B. Unterobjekt mit der ID 91147 und dem Unterobjekt _0a12ff61e3b10c31478f2ff62b49e68e möchten Sie einen Eigenschaftswert herausfinden, der in diesem Unterobjekt gesetzt ist. Innerhalb einer ask-Abfrage, die Sie mit hasSubObject im SQL-Speicher machen, wird dies komplizierter.

Die SMW_TRIPLES_NS-Ansicht behebt das Problem, indem Informationen zu Namespaces und Unterobjekten zu jedem Subjekt in den Tripeln hinzugefügt werden. Dies ermöglicht die eindeutige Identifizierung von Unterobjekt-Tripeln.

Für den zweiten Teil Ihrer Frage bezüglich des Haschs schauen Sie bitte auf einige der anderen Antworten, die zu diesem Thema kompetenter scheinen als ich.

Verwandte Themen