Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
Nowa wersja
Poprzednia wersja
pl:miw:miw08_semantic_wiki [2008/06/11 19:51]
miw
pl:miw:miw08_semantic_wiki [2019/06/27 15:50] (aktualna)
Linia 1: Linia 1:
 ====== Opis ====== ====== Opis ======
 +__**Projekt zakończony**__
 +
 Marcin Juszkiewicz,​ <​monitorr@interia.pl>​ Marcin Juszkiewicz,​ <​monitorr@interia.pl>​
  
Linia 44: Linia 46:
 strony była cachowana przez Wiki, natomiast na stronie z której pobierane strony była cachowana przez Wiki, natomiast na stronie z której pobierane
 był informacje, mogły one zostać zmienione. był informacje, mogły one zostać zmienione.
 +Zapisywanie faktów odbywa się w pluginie swpinput. Generalnie
 +jedynym zadaniem tego pluginu jest zamiana Tagów ​
 +<​code>​
 +<​swp></​swp> ​
 +</​code>​
 +w wyrenderowanej stronie na czcionkę koloru czerwonego, oraz usunięcie
 +cachów plików które są zalezne od tego pliku (pobierają z niego informację,​
 +lub odczytują informacje takiego typu, jaki został właśnie zawarty w tym
 +pliku). Dokładny opis działania cacha, oraz usuwania cacha przedstawię w
 +późniejszych punktach.
 +Odczytywanie faktów odbywa się w pluginie „swp”. W wpisanym
 +Tagu <swp /> odnajdujemy parametr „scope” który określa przestrzeń
 +plików w których będziemy odnajdywać fakty. We wszystkich plikach które
 +znajdują się w danej przestrzeni szukamy Tagów <​code><​swp></​swp></​code>,​ zgodnie ze
 +specyfikacją tekst wewnątrz tych Tagów jest faktem który zostanie przyjęty
 +przez Prolog. Dodatkowo w pluginie SWP wprowadziłem stałą CHECK, jezeli jest ona ustawiona na 0, to fakty nie będą przechodziły walidacji, jeśli na 1, to wszystkie fakty będą sprawdzane przed wprowadzeniem. Wszystkie te fakty
 +zapisujemy w pliku tmp.pl, a następnie uruchamiamy prolog z parametrem
 +„goal” zgodnie ze wzorem:
 +<​code>​
 +swipl -f tmp.pl -g \’'​.$goal.',​writeln(X),​fail.\'';​
 +</​code>​
 +Odpowiedź uzyskaną z Prolog wstawiamy na wyrenderowaną stronę w
 +czcionce w kolorze zielonym.
 +   * Koncepcja CACHE
 +Aby dokładnie opisać moją koncepcje wprowadzę dwa pojęcia, pojęcie
 +pliku zaleŜnego, jest to plik który wyciąga informację (czyli z Tagiem <​code><​swp goal= scope= /></​code>​). Oraz pliku corowego, będę tak nazywał plik który posiada
 +wpisane fakty (w Tagach <​code><​swp></​swp></​code>​).
 +Podczas renderowania pliku zaleznego w katalogu
 +„plugins/​swp/​pages” jest tworzony plik w takiej samej postaci jak to się dzieje w wikipedii. Czyli np. strona o id test:test2 zostaje zapisana w plugins/​swp/​pages/​test/​test2.tpl. W pliku tym zawarte są informację o plikach corowych z których dana strona pobiera informacje, oraz parametr „goal”.
 +W momencie kiedy któryś z plików corowych zostaje zmieniony,
 +plugin „swpinput” sprawdza czy w którymś z wcześniej stworzonych plików
 +nie pobiera informacji z tego pliku corowego, lub nie szuka podobnego faktu.
 +JeŜeli taka sytuacja ma miejsce, to plik cacha pliku zaleznego jest usuwany,
 +co wymusza jego ponowne wyrenderowanie (juz z aktualnymi danymi).
 +   * Implementacja
 +Aby zrealizować odpowiednio powyzsze cele musiałem napisać kilka
 +funkcji, znajdują się one w pliku swpinput.php oraz swp.php.
 +<​code>​
 +function _search($base='​data/​pages'​) // funkcja przeszukuję daną przestrzeń,​
 +oraz odnajduje wszystkie katalogi i pliki w tej przestrzenii
 +function wyslij($pliki) //funkcja przeszukuje pliki podane jako parametr,
 +szuka w nich Tagów <​swp></​swp>,​ a następnie wszystkie informacje
 +między tymi tagami zapisuje do pliku tmp.pl
 +function goal($c) // wykonuję w konsoli wywołanie prolog, z określonym
 +jako parametr celem
 +function save_core($files,​$goal=''​) // zapisuje informację o plikach
 +zaleznych, z których plików corowych korzystają.
 +function cache_delete($fakt='​fdsafas'​) // realizuje kasowanie cacha
 +</​code>​
 +==== Podsumowanie ====
 +Podsumowując moje pluginy potrafią:
 +   * Przyjmować fakty prologa, niezależnie czy z kropką na końcu czy bez co ułatwia prace.
 +   * Walidować fakty prologa.
 +   * Odnajdywać wszystkie fakty z zadanej przestrzeni,​ wprowadzić je do prologu, a następnie wyświetlić odpowiedź prologa na pytanie zadanie w parametrze goal.
 +   * Zapisuje relacje pomiędzy stronami.
 +   * Zapisuje cel jaki jest zadany prologowi na danej stronie, dzięki temu gdy pojawi się nowa strona z faktem który ​ odpowiada temu celowi, cache strony z tym celem jest usuwany.
  
- +Jest nadal jednak kilka elementów nad którymi należało by się zastanowić. 
- +   * Walidacja faktu prologu jest dość skomplikowanym procesem, fakt musi być zapisany w jakimś pliku, później zostaje uruchomiony w prologu, i patrzymy jaka jest odpowiedź z prologa. Można pomyśleć nad jakimś szybkim parserem prologa. Jest to o tyle konieczne, ponieważ jeżeli w pliku z faktami będzie choćby jeden wprowadzony błędnie fakt, to nie otrzymamy odpowiedzi z prologa. 
-====== Spotkania ======+   * Można również zastosować wyrażenia regularne w parametrze scope. Nie jest to trudne zadanie do zrobienia, natomiast mogą występować z tym kłopoty przy dużej ilości plików (trzeba sprawdzić czy każdy jeden plik, pasuje do tego wyrażenia).
  
 <​code>​ <​code>​
Linia 59: Linia 117:
   swipl -f mojpliktymcz.pl -g '​spotkanie(X),​write(X),​halt.'​   swipl -f mojpliktymcz.pl -g '​spotkanie(X),​write(X),​halt.'​
  
-===== 08.03.04 ​===== +====== ​Spotkania ​====== 
-  * ogólnie: kto coś już z tym robił? +[[pl:miw:miw08_semantic_wiki:spotkania]]
- +
-  - http://​korrekt.org/​papers/​KroetzschVrandecicVoelkelHaller_SemanticMediaWiki_2007.pdf +
-  - http://​www.semanticwiki.com/​ +
-  - http://​www2006.org/​programme/​files/​xhtml/​4039/​xhtml/​fp4039-voelkel.html +
-  - http://​argentera.inria.fr/​wiki/​data/​Main/​MainHome.jsp +
- +
-  * przechowywanie wiedzy semantycznej w wiki +
- +
-  - http://​pediaview.com/​openpedia/​Resource_Description_Framework +
-  - http://​pediaview.com/​openpedia/​Web_Ontology_Language +
- +
-  * przechowywanie //reguł// w wiki +
-  - http://​wiki.splitbrain.org/​wiki:​syntax +
-  - http://​kaukoluwiki.opendfki.de/​wiki/​SemanticWikiSyntax +
-  - http://​www.xml.com/​pub/​a/​2006/​12/​13/​semantic-wikis-and-disaster-relief-operations.html?​page=2 +
- +
- +
- +
- +
- +
- +
- +
-===== 080318 ​===== +
-  * plugin w php do dokuwiki, urucham po stronie serwera swiprolog +
-    - http://​student.agh.edu.pl/​~mjuszkie/​miw.txt +
-    - http://​gollem.science.uva.nl/​SWI-Prolog/​Manual/​compilation.html +
- +
- +
-===== 080408 ===== +
-  * prototyp +
- +
- +
-===== 080527 ===== +
-  * cache? +
- +
- +
-===== 080603 ===== +
-  * beta pluginu do zainst +
-  * zarys sprawozdcel, specyfi (fun), możliwe realizacje+projekt,​ implementacja,​ problemy+uwagi,​ etc.. +
-  * opis koncepcji cache w sprawozd +
- +
- +
-====== Projekt ====== +
-   * http://​hyper.ia.agh.edu.pl/​~juszkiem/​MIW/​swpinput.zip +
-   * http://​hyper.ia.agh.edu.pl/​~juszkiem/​MIW/​swp.zip +
- +
- +
-====== Sprawozdanie ====== +
-   * http://​hyper.ia.agh.edu.pl/​~juszkiem/​MIW/​Semantic.pdf +
 ====== Materiały ====== ====== Materiały ======
 ===== Wybrane Wikis ===== ===== Wybrane Wikis =====
pl/miw/miw08_semantic_wiki.1213206674.txt.gz · ostatnio zmienione: 2019/06/27 15:58 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0