FOAF и пример
| Kalinin Dima | |
| Калинин Дима | |
| Род деятельности: |
Программист, автор, студент, аналитик |
|---|---|
| Роль участника: | |
| Дата рождения: |
26 декабря 1987 год |
| Гражданство: |
Украина |
| Сайт: | |
| Nickname | |
| О себе: |
Занимаюсь спортивным программированием |
FOAF (англ. Friend of a Friend) — проект по созданию модели агенто-читаемых домашних страниц и социальных сетей. Создателями FOAF являются Либби Миллер и Дэн Брикли.
В основе проекта лежит спецификация, которая определяет набор выражений, которые используются в высказываниях (англ. statements) о ком-либо: например, имя, пол и другие характеристики.
Для примера работы с FOAF страничкой пользователя будем использовать LAMP и библиотеку ARC, которая помогает очень быстро и легко манипулировать RDF данными и делать запросы SPARQL. Также эту библиотеку часто рекомендуют авторы книг по Семантическому Вебу за рубежом.
Заметка: ARC - набор PHP-классов, с помошью которых можно работать с RDF в системах LAMP (Linux, Apache, MySQL, PHP).
Создадим свою страничку для FOAF:
test.rdf
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"> <foaf:Person> <foaf:name>Dima Kalinin</foaf:name> <foaf:mbox rdf:resource="mailto:kal1sha.ua@gmail.com"/> <foaf:homepage rdf:resource="http://twitter.com/kal1sha" /> <foaf:nick>kal1sha</foaf:nick> <foaf:depiction rdf:resource="http://a1.twimg.com/profile_images/596994746/17752844_bigger.gif" /> <foaf:interest> <rdf:Description rdf:about="http://habrahabr.ru/" rdfs:label="Habrahabr" /> </foaf:interest> <foaf:knows> <foaf:Person> <foaf:name>Dima Kulish</foaf:name> <foaf:name>Konstanit Gancov</foaf:name> </foaf:Person> </foaf:knows> </foaf:Person> </rdf:RDF>
Описание к ней думаю будет излишним, т.к. RDF является веткой XML, и также не нужны большие знания английского языка, чтобы понять, что описали.
Вот пример, как вывести все имена из файла профиля:
test.php
<?php
include_once("./ARC2.php");
//конфигурация для БД
$config = array(
'db_name' => 'foaf',
'db_user' => 'root',
'db_pwd' => '1234',
'store_name' => 'arc_tests',
'max_errors' => 100,
);
//создаем базу и таблицы
$store = ARC2::getStore($config);
if (!$store->isSetUp()) {
$store->setUp();
}
//пример, как распарсить rdf файл
$parser = ARC2::getRDFParser();
$parser->parse('test.rdf');
$triples = $parser->getTriples();
//а вот пример, как распарсить и сохранить в mysql базе
$parser = ARC2::getRDFParser();
$parser->parse('./test.rdf');
//вот сам запрос
$store->query('LOAD <./test.rdf>');
$triples = $parser->getTriples();
//выводим все имена, которые встречаются
// в файлах профиля
$q = '
PREFIX foaf: <xmlns.com/foaf/0.1/> .
SELECT ?person ?name WHERE {
?person a foaf:Person ; foaf:name ?name .
}
';
$r = '';
if ($rows = $store->query($q, 'rows')) {
foreach ($rows as $row) {
$r .= '' . $row['name'] . '';
}
}
echo $r ? '' : 'Не указал имена';
?>
Выводит на экран:
Dima Kalinin
Dima Kulish
Konstantin Gancov
Вопросы и рекомендации по данной статье можно задавать на нашем форуме!
| Уровень публикуемого материала | |
| Рекомендуемый уровень знаний читателя в предметной области : | |
|---|---|
| Обсуждение: | |
| Публикация | |
| Тип публикации: | |
|---|---|