FOAF и пример

Материал из Semantic Future
Перейти к: навигация, поиск
Kalinin Dima
Калинин Дима
Род деятельности:

Программист, автор, студент, аналитик

Роль участника:

Участник, Администратор

Дата рождения:

26 декабря 1987 год

Гражданство:

Украина

Сайт:

http://kal1sha.habrahabr.ru/blog/

Nickname

Kal1sha

О себе:

Занимаюсь спортивным программированием



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


Вопросы и рекомендации по данной статье можно задавать на нашем форуме!

Уровень публикуемого материала
Рекомендуемый уровень знаний читателя в предметной области :

Средний

Обсуждение:
Публикация
Тип публикации:

Практический пример

Личные инструменты
Пространства имён
Варианты
Действия
Проект SF:
Деятельность:
Сообщество:
Хранилище знаний:
Гиды:
Руководства:
Инструменты