SemWeb_RDFStore

Dawid Molenda dawid at molenda.info

  • RDF Stores - investigate the tools' functionality & possibilities
  • importing data from Relational Databases into RDF Triple Stores › examples, applications
  • importing data from various sources (spreadsheets, databases, other…) into RDF Triple Stores

Spotkania

20090521

godz. 11:00

  • szkic sprawozdania ok - proszę uzupelnić
  • aplikacja

20090513

  • dołożyc do porównania do tabelki: swi-prolog, cliopatria
  • 2 przypadki użycia:
    • rodzina - powiązania
    • miasto - wydarzenia
  • o dbpedii, freebase, yago etc.(opis, linki do danych)
  • + to co nie zostało wgrane z poprzedniego razu

20090421

  • na następny raz:
    • uzupelnic tabelke por. narzędzi
    • wykaz istniejacych baz RDF
    • ok.3 propozycje przypadkow użycia
    • pdfy, prezentacje - wgrać do wiki z krótkim komentarzem

20090327

  • na nast. raz:
    • syntetyczne porówn narz
    • poczytać o RDFS/OWL
    • wybrany silnik/i (sparql→niezależny od impl)
    • przypadki użycia

20090312

  • ogólny cel projektu: poznać metody inż.wiedzy w SemWeb, w szczególności zastosowanie RDF, RDFS, OWL w praktycznych aplikacjach
  • stworzyć prototyp aplikacji
    • baza danych RDF
    • Query Engine
    • GUI
  • na następny raz proszę przygotować (opisać w sekcji Sprawozdanie):

Projekt

Sprawozdanie

Konwersja SQL -> RDF

Relacyjne bazy danych pozwalają na to aby tabela miała dowolną liczbę kolumn których wiersz wyraża informację dotyczącą predykatu w logice pierwszego rzędu z dowolną ilością miejsc. Taki wiersz albo predykat musi być dekomponowany do reprezentacji jako trójka RDF. Prosta forma dekompozycji wprowadza nowy pusty węzeł odpowiadający wierszowi i nowa trójka (triple) jest wprowadzona do jego każdej komórki. Temat każdej trójki to nowy pusty węzeł, predykat odpowiada nazwie kolumny, a obiektem jest wartość wprowadzona do komórki wiersza. Nowy pusty węzeł może mieć także właściwość rdf:type, której wartość odpowiada nazwie tabeli. Stąd bardziej kompleksowy fakt wyraża się w RDF przy użyciu iloczynu logicznego (logical-AND) prostej relacji dwuargumentowej. RDF nie dostarcza środków do negacji (NOT) czy alternatywy (OR). Koncepcje i Składnia Abstrakcyjna

Trójka RDF

  • temat (podmiot) który jest znacznikiem RDF URI lub pusty węzeł
  • predykat, który jest znaczniekiem RDF URI
  • obiekt, który jest znacznikiem RDF URI, literałem lub pustym węzłem

RDF/RDFS/OWL

W wielkim skrócie jakie są różnice:

  • RDF

Język opisu zasobów.

  • RDFS

O ile RDF zawiera jedynie informacje w postaci grafu skierowanego, to RDF Schema wprowadza podstawowe pojęcia, pozwalające na strukturalne uporządkowanie tego grafu. RDF Schema stanowi bazę dla języka OWL. Wprowadza pojęcie klasy i właściwości.

  • RDFS+ (OWL RDFS+)

Jest to RDFS wzbogacony o predykaty owl:sameAs i owl:InverseFunctionalProperty z języka OWL.

  • OWL

OWL dodaje więcej słownictwa dla opisywania właściwości I klas: między innymi, relacje między klasami (np. rozłączność), liczebność (np. dokładnie jeden), równość, bogatsze grupowanie właściwości, cechy właściwości (np. symetryczność), oraz ponumerowane klasy.

Istnieją 3 podjęzyki OWL o wzrastającej ekspresyjności:

OWL Lite Udostępnia jedynie proste ograniczenia (np. liczebność tylko 0 lub 1).

OWL DL Udostępnia pełny model OWL ale z ograniczeniami gwarantującymi obliczeniową kompletność (wszystkie są wykonywalne obliczeniowo). Najczęściej wykorzystywany przy budowie ontologi OWL.

OWL Full Udostępnia bez ograniczeń pełny model OWL i składniową dowolność RDF. Jak podaje W3C „mało prawdopodobne jest, by jakiekolwiek oprogramowanie logiczne będzie w stanie wspierać kompletne rozumowanie logiczne dla każdej cechy OWL Full”.

Serializacja danych RDF

  • XML

Podstawowa metoda serializacji danych RDF. Jak w każdym dokumencie XML przerost formy nad treścią.

Przykład:

<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
  <rdf:Description rdf:about="http://en.wikipedia.org/wiki/Tony_Benn">
    <dc:title>Tony Benn</dc:title>
    <dc:publisher>Wikipedia</dc:publisher>
  </rdf:Description>
</rdf:RDF>
  • Notation3 (N3)

Obecnie najpolularniejsza metoda serializacji danych RDF, po definicji przestrzeni nazw (@prefix) nie trzeba używać pełnych URI. Dokument przedstawia po kolei trójki RDF bez dodatkowych tagów.

Przykład:

@prefix dc: <http://purl.org/dc/elements/1.1/>.

<http://en.wikipedia.org/wiki/Tony_Benn>
  dc:title "Tony Benn";
  dc:publisher "Wikipedia".

http://www.w3.org/DesignIssues/Notation3.html http://en.wikipedia.org/wiki/Notation_3

  • Turtle

Uproszczona wersja (pozdbiór) notacji N3.

http://www.w3.org/TeamSubmission/turtle/ http://en.wikipedia.org/wiki/Turtle_(syntax)

  • RDFa

Standard pozwalający na dołączanie dancyh RDF do zwykłych stron XHTML. Każdemu elementowu HTML możemy przypisać dane RDF w ten sposób opisując wyrażeniami sieci semantycznej zwykłą treść strony.

<div xmlns:dc="http://purl.org/dc/elements/1.1/">
   <div about="/alice/posts/trouble_with_bob">
      <h2 property="dc:title">The trouble with Bob</h2>
      <h3 property="dc:creator">Alice</h3>
      ...
   </div>
   ...
</div>

http://www.w3.org/TR/xhtml-rdfa-primer/ http://www.w3.org/TR/rdfa-syntax/ http://en.wikipedia.org/wiki/RDFa

SPARQL

Dostępne bazy wiedzy

Wikipedia

http://www.wikipedia.org/ http://download.wikipedia.org/

Wikipedia jset olbrzymią bazą wiedzy. Może być wykorzystana do testowania systemów analizy tekstu. Artykuły zawierają duże fragmenty ciągłego tekstu o łatwej do przewidzenia tematyce i co ważne są pisane względnie poprawnym, współcześnie używanym językiem.

Bardzo szybko można bydować bazę wiedzy wykrozystująć szablony używane w Infoboksach. Informacje zawarte w tej części są uporządkowane w formie tabeli klucz → wartość i dotyczą okręślonego typu obiektu (np. miasto, polityk, roślina).

Wykorzystująć linki pomiędzy wersjami językowymi można uzyskać nazwy pojęć w wielu językach (te linki znajdują się w osobnej tabeli 'langlinks', więc nie trzeba analizować treści artykułów).

Przekierowania mogą być wykorzystane do budowy bazy równoznacznych nazw pojęć (także znajdują sie w osobnej tabeli 'redirects').

Kategorie porządkują pojęcia w zbiory dotyczące określonego tematu. Niestety panuję tu duża dowolność i wiele pojęć nie jest przypisanych do odpowiedniej kategorii. Kategorie są opisane w tabeli 'category'.

Kolejnym elementem są linki zewnętrzne, są opisane w osobnej tabeli 'externallinks'. Zazwyczaj trafnie powiązują strony internetowe z danym pojęciem, dodatkowo część posiada tytuł, który opisuje zewnętrzną stronę.

Wikipedii nie ma sensu analizować pobierając strony poszczególnych haseł, należy ściągnąć zrzuty bazy danych i załadować na lokalny serwer. Dane haseł (wraz z treścią) są dostępne w postaci pliku xml, pozostałe dane jako tabele MySQL. Problemem może być rozmiar danych, dla angielskiej wersji XML ma 21GB, a niektóre tabele SQL ponad 200 000 000 wierszy.

WikiProject Geographical coordinates

http://en.wikipedia.org/wiki/Wikipedia:WikiProject_Geographical_coordinates

Projekt przyporządkowywania współrzędnych geograficznych do artykułów wikipedii. Dla wszystkich artykułów musi być wykorzystywany szablon coord.

Dzięki temu można przeparsować artykuły z wikipedii w celu wydobycia współrzednych, możliwe są 2 metody:

  • przegląd treści wszystkich artykułów w poszukiwaniu tagu `coord` (pliki *wiki-latest-pages-articles.xml), nie powinno się stosować - nie wszystkie współrzędne są wprost określone za pomocą `coord`, dużo danych jest w infoboxach w innej postaci.
  • lub lepsza metoda polegająca na przeglądzie tabeli `externallinks`, jest to możliwe ponieważ wszystkie współrzędne linkują w to samo miejsce 'http://stable.toolserver.org/geohack/geohack.php' (plik *wiki-latest-externallinks.sql)

Wikipedia-World

Isnieje (istniał) projekt na wiki tools, który parsuje artykuły w poszukiwaniu współrzędnych i tworzy gotowe do pobrania tabele SQL. Niestety ostatnia aktualizacja to 5 sierpnia 2008.

DBpedia

http://www.dbpedia.org/

DBpedia jest bazą wiedzy RDF (zawiera ponad 275 milionów trójek). Dane są tworzone na podstawie wikipedii (14 wersji językowych, także Polska). Opisuje ponad 2.5 miliona haseł (213,000 persons, 328,000 places, 57,000 music albums, 36,000 films, 20,000 companies).

Dane

DBpedia wykorzystuje kilka zbiorów RDF, lista wg przestrzeni nazw:

  • „dbpedia:” - nazwy zasobów (hasła).
  • „dbpprop:” - dane z infoboxów, są to zupełnie nie powiązane ze sobą trójki zawierające informacje przepisane wprost z infoboxów, wg. zasady klucz → wartość (plik infobox_*.nt)
  • „dbpedia-owl:” - przetworzone dane z infoboxów, wszystkie predykaty tworzą uporządkowaną ontologie OWL, aktualnie ilość danych jest znacznie mniejsza w stosunku do „dbpprop:” (plik infobox-mappingbased-loose.nt, types-mappingbased.nt)
  • „foaf:” - http://xmlns.com/foaf/spec/ (m.in. plik persondata_*.nt)
  • „skos:” - http://www.w3.org/TR/2009/CR-skos-reference-20090317/skos.html - powiązania z kategorami wikipedii (skos:subject, plik articlecategories_*.nt, skoscategories_*.nt)
  • „geo:” - http://www.w3.org/2003/01/geo/, współrzędne geograficzne (plik: geo_*.nt)
  • „georss:” - http://www.georss.org/georss/point, współrzędne geograficzne (plik: geo_*.nt)
  • „xsd:” - XML Shema
  • „rdf:” - wykorzystywany rdf:type - powiązania zasobów z ontologią dbpedia-owl (plik: types-mappingbased.nt)
  • „rdfs:” - wykorzystywane predykaty: rdfs:comment, rdfs:label
  • „owl:” - wykorzystywane predykaty: owl:sameAs - linki do innych baz

Dla „rdf:”, „rdfs:”, „owl:” podałem tylko predykaty używane do opisu „haseł”, opis ontologi wykorzystuje pełny RDFS / OWL-DL.

DBpedia linkuje do kilku innych baz wiedzy, szczegóły na http://wiki.dbpedia.org/Interlinking

Ontologia

Przykładowe hasło

http://dbpedia.org/page/Berlin

Dostęp do danych

http://wiki.dbpedia.org/Architecture?v=1411

Dostępny jest interfejs SPARQL (http://dbpedia.org/sparql), SNORQL - interfejs do SPARQL w html (http://dbpedia.org/snorql/).

Zasoby mogą być prezentowane jako: html, n3, rdf/xml.

Można także pobrać pełny dump bazy (format N3): http://wiki.dbpedia.org/Downloads32.

System parsujący dane z wikipedii Dokumentacja i link do kodu poprzez SVN: http://wiki.dbpedia.org/Documentation, całość napisana w PHP, można pobrać pełny kod w tar.gz. Kod jest bardzo czytelny i jego fragmenty mogą być podstawą do pisania własnego parsera wiki, np. wspomnianego wydobywania współrzędnych geo - w kodzie jest m.in. klasa „GeoExtractor”.

Freebase

http://www.freebase.com/ http://www.freebase.com/view/freebase/faq

Freebase jest otwartą bazą wiedzy tworzoną przez użytkowników (ale część danych pochodzi także z innych zaimportowanych źródeł). Freebase prezentuje trochę inne podejście niż pozostałe bazy wiedzy. Jest pełnym systemem prezentacji i edycji danych a dostęp Linked Data jest tylko kolejną możliwością przeglądania bazy, udostępnioną znacznie później niż inne interfejsy.

Baza zawiera bardzo uporządkowane dane w ściśle określonych kategoriach, dla każdego hasła są wybrane odpowiednie zestawy właściwości, pojedyncze właściwości mogą odpowiadać predykatom RDF (np. zestaw „Location” zawiera informacje o lokalizacji geograficznej).

Przykładowe hasło

http://www.freebase.com/view/en/berlin

Dostęp do danych

Download - pliki nie są w formacie RDF.

A full dump of Freebase assertions in a simple utf8 text format. This is a complete „low level” dump of data which is suitable for post processing into RDF or XML datasets. The format of the link export is a series of lines, one assertion per line. The lines are tab separated quadruples, <source>, <property>, <destination>, <value> An assertion is a statement of fact about the <source> object. In any assertion, either the <destination> or <value> or both <destination> and <value> are present.

Dostęp RDF - interfejs pozwalajaćy przeglądać pojedyncze hasła w formacie RDF (stworzony aby Freebase mogło być linkowane z innymi bazami RDF).

Przykładowe hasło w RDF: http://rdf.freebase.com/rdf/en/berlin

Geonames

http://www.geonames.org/

Jest to baza danych geograficznych dla całego świata. Udostępniania na licencji Creative Commons Attribution 3.0 License (jednak niektóre inne otwarte systemy, np. OpenStreetMap nie chcą korzystać z geonames ponieważ baza jest częściowo stworzona z komercyjnych zasobów bez otwartej licencji).

Baza zawiera informacje zarówno o krajach, jednostach administracyjnych, miastach jak i innych obiektach geograficznych takich jak jeziora, szczyty, doliny. Aktualnie baza nie zawiera informacji o dzielnicach i ulicach.

Każdy obiekt jest przydzielony do odpowiedniej kategorii (http://www.geonames.org/export/codes.html). Do każdego rekordu jest dołączona informacja o połorzeniu geograficznym (współrzędne geograficzne, kraj, podział administracyjny), populacji (tam gdzie pasuje), wysokością, obliczoną wysokością na podstawie danych GTOPO30, strefie czasowej. Dodatkowo dla krajów jest dostarczonych więcej informacji - nr kierunkowy, schemat kodów pocztowych, kody FIPS10-4, kody ISO, itp.

Jedną z większych zalet geonames jest olbrzymia baza nazw alternatywnych, zawierająca skróty, nazwy potoczne oraz nazwy w kilkudziesięciu językach.

Ontologia http://www.geonames.org/ontology/ RDF endpoint http://sws.geonames.org/ serwuje dane rdf zgodne z Linked Data. Ontologia definiuje kilka klas, m.in.:

  • #Class - klasa (kategoria)
  • #Code - kod obiektu
  • #Country - kraj
  • #Feature - id obiektu w bazie geonames
  • #WikipediaArticle - artykuł z wikipedi o obiekcie

owl:DatatypeProperty:

  • #alternateName - nazwa alternatywna
  • #name - nazwa
  • #officialName - nazwa oficjalna
  • #population - populacja
  • #postalCode - kod pocztowy
  • #wgs84_pos - współrzędne

owl:ObjectProperty:

  • #childrenFeatures - link do „potomków”
  • #inCountry - kod iso kraju
  • #locatedIn - połorzenie wewnątrz innego obiektu
  • #nearby - obiekty połorzone w pobliżu
  • #nearbyFeatures - link do obiektów połorzonych w pobliżu
  • #neighbour - obiekty sąsiadujące
  • #neighbouringFeatures - link do obiektów sąsiadujących
  • #parentFeature - obiekt „rodzic”

Dodatkowo w ontologi są zdefiniowane wszystkie kategorie obiektów (#featureClass, #featureCode) jako linki owl:sameAs do stron http://www.eionet.europa.eu/gemet/, np. „kanał”: http://www.eionet.europa.eu/gemet/concept/1126.

Podsumowując ontologia pozwala na wyszukiwanie obiektów połorzonych w pobliżu, sąsiadujących i nadrzędnych do danego.

Przykładowe zapytania

Web Services

http://www.geonames.org/export/web-services.html Umożliwia zdalne pobieranie danych.

Download:

http://download.geonames.org/export/dump/ Pliki są w formacie tekstu rozdzielanego tabulatorami. Aby załadować dane do bazy SQL najlepiej stworzyć tabele i posłużyć się komendą LOAD DATA INFILE.

yago

http://www.mpi-inf.mpg.de/yago-naga/yago/

YAGO is a huge semantic knowledge base. Currently, YAGO knows more than 2 million entities (like persons, organizations, cities, etc.). It knows 20 million facts about these entities. Unlike many other automatically assembled knowledge bases, YAGO has a manually confirmed accuracy of 95%.

Przykładowe zapytania http://www.mpi-inf.mpg.de/yago-naga/yago/demo.html

UMBEL

http://www.umbel.org/

Umbel jest ontlogią posiadającą połączenia z innymi ontologiami oraz z innymi bazami wiedzy (dbpedia, yago). Sam projekt nie jest bazą wiedzy. W pełni wykorzystuje OWL-Full.

Dokumentacja: http://www.umbel.org/documentation.html

Przykładowe hasło:

http://umbel.org/umbel/ne/wikipedia/Berlin (

OpenCyc, Cyc

http://pl.wikipedia.org/wiki/Cyc http://www.opencyc.org/doc

OpenCyc is the open source version of the Cyc technology, the world's largest and most complete general knowledge base and commonsense reasoning engine. OpenCyc contains the full set of (non-proprietary) Cyc terms as well as millions of assertions about the. Cycorp offers this ontology at no cost and encourages you to make use of it as you see fit.

Release 1.0 of OpenCyc includes the entire Cyc ontology containing hundreds of thousands of terms, along with millions of assertions relating the terms to each other, forming an upper ontology whose domain is all of human consensus reality.

WordNET

http://wordnet.princeton.edu/ http://wordnet.princeton.edu/obtain

WordNet® is a large lexical database of English, developed under the direction of George A. Miller. Nouns, verbs, adjectives and adverbs are grouped into sets of cognitive synonyms (synsets), each expressing a distinct concept. Synsets are interlinked by means of conceptual-semantic and lexical relations. The resulting network of meaningfully related words and concepts can be navigated with the browser. WordNet is also freely and publicly available for download. WordNet's structure makes it a useful tool for computational linguistics and natural language processing.

SUMO (Suggested Upper Merged Ontology)

http://www.ontologyportal.org/

  • Mappings to all of WordNet
  • Largest free, formal ontology available, with 20,000 terms and 70,000 axioms when all domain ontologies are combined.

DMOZ

http://www.dmoz.org/

Publicznie dostępny dump bazy katalogu dmoz jest w formacie rdf, ale jest nie do końca zgodny ze standardami i są problemy z jego załadowaniem przez większość parserów.

Format RDF jest tu prawdopodobnie wykorzystywany ze względu na łatwiejsze opisanie drzewa kategorii niż w bazach relacyjnych. Baza nie jest ciekawa pod względem bezpośredniego wykorzystania w SemWeb. Istnieją gotowe narzędzia do konwersji pobranych plików na tabele SQL, np.: suckDMOZ.

DMOZ może być wykorzystany jako lista stron o wstępnie określonej tematyce (choć bardzo niedokładnie), jako taka baza URLi może być wykorzystany do budowy pająka.

RDF Dump

Chef Moz

http://chefmoz.org/

Jest to baza wiedzy dotycząca restauracji. Bardzo stary projekt i już raczej nie aktualizowany.

RDF dump download.

Przykładowe hasła

http://chefmoz.org/Poland/MP/Cracow/Stare_Miasto_-_I_-_Rynek_Główny/

MusicMoz

http://musicmoz.org/

Baza wiedzy na temat muzyki (wykonawcy, albumy i inne). Projekt nie jest aktualizowany od 2007 roku.

Download dancyh

http://musicmoz.org/xml/ Dane nie są w formacie RDF.

Przykładowe hasło

http://musicmoz.org/Bands_and_Artists/D/Delirious/ XML: http://musicmoz.org/xml/musicmoz.bandsandartists.d.delirious.xml

Linked Data

Jedna z dziedzin Semantic Web. Zajmuje się łączeniem różnych otwartych zbiorów wiedzy RDF poprzez określenie standardu prezentacji danych.

Jeśli system udostępniaja odpowiedni interfejs to możemy z dowolnego miejsca przeglądać dowolną bazę wiedzy wykrozystując dowolny kompatybilny interfejs (jak strony WWW).

Hasło „Berlin” z DBpedii w dwóch przykładowych przeglądarkach Semantic Web:

http://demo.openlinksw.com/sparql - pod tym adresem znajduje się interfejs sparql umożliwiający wykonywanie zapytań wykorzystujących Linked Data.

Sitemap Extension

Warto też wspomnieć o Sitemap Extension umożliwiającym robotom dostęp do informacji. Mapa strony Semantic Web definiuje prefix dla zlączonych danych (np. http://dbpedia.org/resource/), adres interfejsu SPARQL, adresy zrzutów bazy danych oraz kilka dodatkowych informacji.

Przykładowa mapa strony (dbpedia): http://dbpedia.org/sitemap.xml

RDF Stroes

http://en.wikipedia.org/wiki/Triplestore

Nazwa Język RDFS / OWL Składowanie Interfejs Uwagi Web
3store C - MySQL
Berkeley DB
RDQL and SPARQL (HTTP server) C API do 100mln http://sourceforge.net/projects/threestore/
http://www.aktors.org/technologies/3store/
Redland C - Berkeley DB
MySQL
PostgreSQL
AKT Triplestore (?)
SQLite
files
URIs
SPARQL and RDQL
Perl
PHP
Python
Ruby
Raptor RDF Parser Library http://librdf.org/
ARC PHP - MySQL SPARQL
PHP
http://arc.semsol.org/
RAP PHP rdfs:subclass
rdfs:subproperty
rdfs:range
rdfs:domain
owl:sameAs
owl:inverseOf
Memory
Database
SPARQL
RDQL
PHP
ADOdb Library
http://www.semanticscripting.org/SFSW2005/papers/Oldakowski-RAP.pdf
http://www4.wiwiss.fu-berlin.de/bizer/rdfapi/
AllegroGraph Java RDFS+
OWL DL
SPARQL
Prolog
Bardzo wydajny
Darmowy ma liczne ograniczenia – m.in. 50 mln trójek
http://www.franz.com/agraph/
Jena Java RDFS
OWL
Memory
Database
SPARQL Możliwość wyboru zakresu RDFS i OWL
Słaba wydajność RDFS/OWL dla baz danych (dobra tylko w pamięci)
Dla samego RDF bardzo dobra wydajność
http://jena.sourceforge.net/
Mulgara Java - Memory
Database
SPARQL RDFS/OWL planowany http://www.mulgara.org/
Sesame Java RDFS Memory
MySQL, PostgreSQL, Oracle
SeRQL
API
http://www.openrdf.org/
Oracle 11g RDFS
OWL Full
Darmowy dla deweloperów http://www.oracle.com/technology/tech/semantic_technologies/index.html
Virtuoso RDFS
OWL Full
Virtuoso
Virtuoso Open-Source Edition
ClioPatria Prolog - Memory SeRQL
SPARQL
http://e-culture.multimedian.nl/software/ClioPatria.shtml

C/C++:

3store is an RDF „triple store”, written in C and backed by MySQL and Berkeley DB. It is an optimisation and port of an older triple store (WebKBC). It provides access to the RDF data via RDQL or SPARQL over HTTP, on the command line or via a C API. strona na sourceforge

Redland is a set of free software libraries that provide support for the Resource Description Framework (RDF). The software is available under multiple licenses, namely GPL, LGPL, and Apache License, to simplify reuse.

Posiada biblioteki do PHP i innych jezyków

PHP:

ARC is a flexible RDF system for semantic web and PHP practitioners, developed by Benjamin Nowack. It's open-source, easy to use, and runs in most web server environments. The new version of ARC, ARC 2, is currently available for preview.

RAP, the RDF API for PHP, is a software package for parsing, searching, manipulating, serializing and serving RDF models.

Model wykorzystujący bazę danych nie obsługuje RDFS i OWL, wnioskowanie jest obsługiwane jedynie w modelach przechowujących bazę wiedzy w pamięci.

Instalacja i uruchomienie

Całość jest napisana w PHP więc nie jest wymagana instalacja - wystarczy po rozpakowaniu dołączyć do projektu (skryptu) odpowiednie pliki PHP i zyskujemy dostęp do RDF API.

Java:

AllegroGraph is a disk-based RDF Database, that aims at providing a solid storage layer for powerful geotemporal reasoning, social network analytics and ontology modeling capabilities for today's Semantic Technology applications.

Biblioteki do prologa.

  • Jena (1.7B/650M/200M)

Jena is a Java framework for building Semantic Web applications. It provides a programmatic environment for RDF, RDFS and OWL, SPARQL and includes a rule-based inference engine. Joseki is an HTTP engine that supports the SPARQL Protocol and the SPARQL RDF Query language. http://www.joseki.org/

Instalacja i uruchomienie

Po pobraniu wystarczy rozpakować archiwum i jeśli mamy zainstalowaną odpowiednią wersję java wszystko powinno działać. W pakiecie jest dostarczony skrypt testujący działanie.

Mulgara is a scalable open source RDF database written entirely in Java. Mulgara is an open source fork of Kowari.

http://www.aduna-software.com/home/overview.view Sesame is an open source RDF framework with support for RDF Schema inferencing and querying. Originally, it was developed by Aduna (then known as Aidministrator) as a research prototype for the EU research project On-To-Knowledge. Now, it is further developed and maintained by Aduna in cooperation with NLnet Foundation, developers from Ontotext, and a number of volunteer developers who contribute ideas, bug reports and fixes.

Instalacja i uruchomienie

http://www.openrdf.org/doc/sesame/users/ch02.html Po pobraniu wystarczy rozpakować archiwum i jeśli mamy zainstalowaną odpowiednią wersję java wszystko powinno działać. Można wykonać test uruchamiając konsole.

Prolog:

ClioPatria is the award winning, SWI-Prolog-based platform for Semantic Web Applications. It joins the SWI-Prolog RDF and HTTP infrastructure with a SeRQL/SPARQL query engine, interfacing to the The Yahoo! User Interface Library (YUI) and libraries that support semantic search.

The platform combines a high performance in-core RDF store with flexible reasoning in Prolog, query optimization. Prolog's interactive usage and capabilities of recompiling modified source code while the system remains alive greatly speedup development.

Key figures Up to about 25 million RDF triples on 32-bit hardware, only limited by memory on 64-bit hardware. Exploits multi-CPU and multi-core hardware to answer requests over HTTP concurrently. Runs on Windows, MacOS X, Linux and most Unix flavours, supporting both 32-bit and 64-bit operating systems. 64-bit systems are recommended for servers with lots of data or many users.

Thea is a Prolog library for generating and manipulating OWL (Web Ontology Language) content. Thea version 0.5 consists of: OWL parser, OWL generator and SQL to OWL converter.

Inne:

http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/ Jeden z bardziej wydajnych silników. Wersja OpenLink Virtuoso używany m.in. przez DBpedia.

Virtuoso Universal Server s a middleware and database engine hybrid that combines the functionality of a traditional RDBMS, ORDBMS, virtual database, Resource Description Framework (RDF), XML, free-text, Web Application Server, and File Server functionality in a single server product offering. Rather than have dedicated servers for each of the aforementioned functionality realms, Virtuoso is a „universal server”; it enables a single multithreaded server process that implements multiple protocols. The open source edition of Virtuoso Universal Server is also known as OpenLink Virtuoso.

Instalacja i uruchomienie

http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VOSMake Dotyczy wersji OpenLink Virtuoso. Po pobraniu archiwum (źródła) kompilujemy.

./configure
make

Następnie można uruchomić automatyczny skrypt testujący:

make check

Instalacja wymaga uprawnień root i zostanie wykonana po poleceniu:

make install

System nie sprawiał żadnych problemów podczas któregokolwiek etapu.

Benchmark

Podczas własnych testów zauważyłem, że ważna jest odpowiednia ilość pamięci (minimum 2GB), OpenLink Virtuoso podczas działania skryptu testującego zajmował około 1GB. Wszystkie środowiska uzyskują odpowiednią wydajność wtedy gdy dane są przechowywane w pamięci RAM. Przechowywanie danych RDF w bazie MySQL znacznie zmniejsza wydajność, a w niektórych prostych systemach wyłącza wnioskowanie.

Przykłady użycia

Przykłady opierają się na dbpedii.

  • Obiekty połorzone w pobliżu Krakowa:
SELECT ?subject ?label ?lat ?long WHERE {
<http://dbpedia.org/resource/Krak%C3%B3w> geo:lat ?myLat .
<http://dbpedia.org/resource/Krak%C3%B3w> geo:long ?myLong .
?subject geo:lat ?lat.
?subject geo:long ?long.
?subject rdfs:label ?label.
FILTER(xsd:float(?lat) - xsd:float(?myLat) <= 0.05 &&
xsd:float(?myLat) - xsd:float(?lat) <= 0.05 &&
xsd:float(?long) - xsd:float(?myLong) <= 0.05 &&
xsd:float(?myLong) - xsd:float(?long) <= 0.05 &&
(lang(?label) = "en" || lang(?label) = "pl")).
}

|+lang(%3Flabel)+%3D+%22pl%22)).%0D%0A}%0D%0A|wynik

  • Uniwersytety w Krakowie:
SELECT ?subject ?label ?lat ?long 
WHERE {
     ?subject rdfs:label ?label.
     ?subject dbpprop:city <http://dbpedia.org/resource/Krak%C3%B3w>.
	?subject rdf:type <http://dbpedia.org/ontology/University>.
	 FILTER (
	(lang(?label) = "en" || lang(?label) = "pl")
	).
	OPTIONAL {
    ?subject geo:lat ?lat.
	?subject geo:long ?long.
	}
}

|+lang(%3Flabel)+%3D+%22pl%22)%0D%0A%09).%0D%0A%09OPTIONAL+{%0D%0A++++%3Fsubject+geo%3Alat+%3Flat.%0D%0A%09%3Fsubject+geo%3Along+%3Flong.%0D%0A%09}%0D%0A}%0D%0A|wynik

  • Obiekty powiązane z Krakowem:
SELECT ?subject ?label ?lat ?long ?type
WHERE {
     ?subject rdfs:label ?label.
     ?subject dbpprop:city <http://dbpedia.org/resource/Krak%C3%B3w>.
	?subject rdf:type ?type.
	 FILTER (
	(lang(?label) = "en" || lang(?label) = "pl")
	).
	OPTIONAL {
    ?subject geo:lat ?lat.
	?subject geo:long ?long.
	}
}

|+lang(%3Flabel)+%3D+%22pl%22)%0D%0A%09).%0D%0A%09OPTIONAL+{%0D%0A++++%3Fsubject+geo%3Alat+%3Flat.%0D%0A%09%3Fsubject+geo%3Along+%3Flong.%0D%0A%09}%0D%0A}%0D%0A|wynik

  • Polscy piłkarze:
SELECT DISTINCT ?name ?type
WHERE {
    ?subject ?func <http://dbpedia.org/resource/Poland>.
	?func rdfs:label ?type.
    ?subject foaf:name ?name .
    ?subject rdf:type <http://dbpedia.org/ontology/FootballPlayer>.
}

wynik

  • Osoby powiązane z Berlinem:
SELECT ?name ?type ?ffa ?fff
WHERE {
    ?subject ?func <http://dbpedia.org/resource/Berlin>.
	?func rdfs:label ?type.
    ?subject foaf:name ?name .
    ?subject rdf:type <http://dbpedia.org/ontology/Person>.
	?subject rdf:type ?ffa.
	?ffa rdfs:label ?fff.
}

wynik

Prezentacja

Materiały

Czyli zestaw, z którym trzeba się zapoznać:

Na początek

Narzędzia

  • RDF store - lista narzędzi na wiki semanticweb.org (nie wszystko aktualne - 5.2009)
  • LargeTripleStores - lista RDFStores z opisem wydajności różnych silników, już trochę nieaktualne, ale warto przeglądnąć
  • SemanticWebTools - lista narzędzi związanych z RDF
  • SPARQL - specyfikacja SPARQL na w3.org
  • SPARQL - SPARQL na wikipedii
pl/miw/2009/miw09_semweb_rdfstore.txt · ostatnio zmienione: 2017/07/17 08:08 (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