2017-02-20 8 views
1

Слишком плохое документирование сводит меня с ума в медиавиках и семантических медиавиках. Что означает подобъект столбца в smw_object_ids? Как я могу найти что-то, связанное с записью, которая хранит что-то вроде _QUERYgjdfghjsag9u05sdfa в указанной выше колонке?Как найти соответствующие записи в SMW по значению в подобъекте field

EDIT

И какие данные smw_proptable_hash должен держать? Если я неэтериализую, то вижу:

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', 
) 

Но ни один из них я не могу найти в указанных таблицах.

ответ

1

Ну, я считаю, что вы не должны выполнять сырые SQL-запросы для просмотра семантических данных, потому что у SMW уже есть классы и методы для него. Хотя, они едва документированы, поэтому вам нужно исследовать источники, чтобы понять, как они работают и как правильно их использовать.

Вы можете найти пример, посмотрев на источники SemanticQueryInterface или так как у него есть поддержка подобъектов, которые вы можете просто использовать в своем коде.

+0

Было мало полезно. Но теперь у меня есть еще один противоположный вопрос: – Velaro

+0

Как хеши добавляются в упомянутую выше таблицу? Если быть точным, у меня есть страница, которая не отображает LastmodifiedBy smwproperty. После отладки я понял, что это не отображается, потому что свойство Lastmodified находится в smw_di_blob, которого нет в списке хэшей. – Velaro

+0

@ Velaro Я считаю, что только создатель SMW знает все эти детали, поэтому я думаю, что было бы намного проще, если бы вы могли описать проблему, которую пытаетесь решить, возможно, для этого не нужно копать SQL. – wakalaka

0

Согласно исходному коду

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

хэши получает генерируется следующим образом:

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

, как, например $ 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 
       ) 

     ) 

) 

Затем этот материал обновляется, как указано в [расширения/SemanticMediaWiki/includes/storage/SQLStore/SMW_SQLS tore3_Writers.php: 611 - writePropertyTableRowUpdates]

== Продолжение скоро ==

0

Пожалуйста, смотрите обсуждение на https://www.semantic-mediawiki.org/wiki/Architecture_Tradeoffs

The viewd SMW_TRIPLES и SWM_TRIPLES_NS даст вам доступ к объекту, предикат, объект и тип троек, хранящихся в SQLStore3.

Способ, которым он работает, показывает вам, как общая структура базы данных SQLStore3 связывает элементы.

теперь вы специально просят таблицы smw_object_ids

, который имеет следующие столбцы:

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) 

, чтобы иметь возможность просматривать содержание varbinaries вы можете использовать бросок, например, как

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 

Теперь вы увидите, что субобъект имеет внутренний хэш-код, который добавляется к заголовку страницы, чтобы подобъекты идентифицировать в пределах страницы.

Вот пример страницы под названием «HammerUndSichel», который имеет четыре подобъектов:

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

Для внутренней памяти используются столбец «Идентификатор» и столбец подобъектов не вступают в игру еще. Беда начинается только тогда, когда вы хотите сделать какой-то обратный поиск. Например. подобъектом с идентификатором 91147 и подобъектом _0a12ff61e3b10c31478f2ff62b49e68e вы хотите узнать некоторое значение свойства, установленное в этом подобъекте. В запросе запроса вы делаете это с помощью hasSubObject в SQL Store, это становится более сложным.

В представлении SMW_TRIPLES_NS рассматривается проблема путем добавления пространства имен и подобъектов каждой теме в тройках. Это позволяет однозначно идентифицировать подобъектные тройки.

Для второй части вашего вопроса относительно хэша, пожалуйста, просмотрите некоторые другие ответы, которые кажутся более компетентными по этому вопросу, чем я.

 Смежные вопросы

  • Нет связанных вопросов^_^