Извлечение данных из веб-ресурсов. Форматы представления данных в вебе
Современный интернет богат на всевозможные форматы, с помощью которых информация хранится, отображается и поставляется конечному пользователю. Рассмотрим их более детально.
Содержание
- Формат XML
- Семантические форматы RDF / OWL / SPARQL
- Форматы доставки данных RSS / Atom / OPML
XML
XML (от англ. eXtensible Markup Language — расширяемый язык разметки) — рекомендованный консорциумом W3C язык разметки. XML - это текстовый формат, предназначенный для хранения структурированных данных, а также для создания на его основе более специализированных языков разметки (XHTML, RSS, SOAP и др.). XML является упрощённым подмножеством языка SGML.
Формат XML является, пожалуй, самым распространенным форматом для хранения данных в сети.
Пример простого XML файла, описывающего страны и их столицы:
<?xml version="1.0" encoding="utf-8"?> <Countries> <Country name=”Украина” capital=”Киев” /> <Country name=”Россия” capital=”Москва” /> </Countries>
Особенности XML:
- удобен для понимания машиной, но неудобный для понимания человеком;
- XML может быть использован в любых типах приложения;
- наличие инструментов для создания, редактирования, разбора XML файлов присутствуют для всех операционных систем и всех современных языков программирования;
- схемы XML файлы можно проверять с помощью XSD схем, что исключает попадание файла в неправильном формате в таком случае.
В .NET разбор и создание XML документов возможно одним из следующих способов.
Первый вариант - с помощью класса XmlDocument:
XmlDocument myXmlDocument = new XmlDocument(); myXmlDocument.Load ("books.xml");
Второй вариант - с помощью Linq To XML:
XDocument doc = new XDocument(); doc.Add(new XComment("This is a comment")); doc.Add(new XElement("Root", "content")); Console.WriteLine(doc); // output // <!--This is a comment--> // <Root>content</Root>
Также можно использовать классы XmlReader и XmlTextReader.
На основании XML построены другие популярные форматы данных, которые мы рассмотрим ниже.
Семантические форматы RDF / OWL / SPARQL
Resource Description Framework (RDF) - разработанная консорциумом W3C технология семантической паутины, которое включает в себя среду описания ресурсов, определяет общую архитектуру метаданных и предназначенная для обеспечения совместимости метаданных с помощью общей семантики структуры и синтаксиса.
Пусть у нас есть некоторый текст:
Wells is the author of the book: The Invisible Man.
В формате RDF эта запись будет иметь вид:
<rdf> <Description about="http://www.xul.fr/Wells"> <s:author>The Invisible Man</s:author> </Description> </rdf>
Как можно увидеть, RDF - это все тот же XML формат, но который предназначен немного для других целей.
OWL (англ. Web Ontology Language) — язык описания онтологий для семантической паутины. Язык OWL позволяет описывать классы и отношения между ними, присущие для веб-документов и приложений. OWL основан на более ранних языках OIL и DAML+OIL и в настоящее время является рекомендованным консорциумом w3c.
Пример OWL разметки:
<?xml version="1.0" encoding="UTF-8"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns="http://www.xfront.com/owl/ontologies/camera/#" xmlns:camera="http://www.xfront.com/owl/ontologies/camera/#" xml:base="http://www.xfront.com/owl/ontologies/camera/"> <owl:Ontology rdf:about=""> <rdfs:comment> Camera OWL Ontology Author: Roger L. Costello </rdfs:comment> </owl:Ontology> </rdf:RDF>
Также необходимо упомянуть о SPARQL - языке запросов, с помощью которого можно делать запросы к семантическим хранилищам и получать данные в формате RDF.
Пусть имеем такую структуру файла:
Тогда имя автора блога можно получить с помощью такого запроса:
PREFIX foaf: <http://xmlns.com/foaf/0.1/> SELECT ?url FROM <bloggers.rdf> WHERE { ?contributor foaf:name "Jon Foobar" . ?contributor foaf:weblog ?url . }
Еще один пример - получение списка всех альбомов музыкальной группы:
PREFIX mo: <http://purl.org/ontology/mo/> SELECT ?album WHERE { ?album a mo:Record; mo:releaseType mo:album; dc:creator <http://zitgist.com/music/artist/65f4f0c5-ef9e-490c-aee3-909e7ae6b2ab>. } ORDER BY ?album
Еще примеры запросов можно посмотреть здесь. Также рекомендую ознакомиться с Semantic Web Development Tools.
Главной библиотекой для работы с семантическими ресурсами является библиотека LINQ to RDF. Она позволяет делать запросы к семантическим ресурсам, получать и обрабатывать данные, а также создавать собственные семантические объекты с помощью метатегов.
Пример запроса:
[Test] public void SparqlQueryWithTheLot() { var ctx = new MusicDataContext("http://musicdb.com/SparqlQuery.aspx"); var q = (from t in qry where t.Year == "2006" && t.GenreName == "History 5 | Fall 2006 | UC Berkeley" orderby t.FileLocation select new { t.Title, t.FileLocation }) .Skip(10) .Take(5); foreach (var track in q) { Console.WriteLine(track.Title + ": " + track.FileLocation); } }
Пример разметки класса:
[OwlResource(OntologyName = "Tasks", RelativeUriReference = "Project")] public class Project : OwlInstanceSupertype { [OwlResource(OntologyName = "Tasks", RelativeUriReference = "name")] public string Name { get; set; } [OwlResource(OntologyName = "Tasks", RelativeUriReference = "hasTask")] public EntitySet<Task> Tasks { get; set; } [OwlResource(OntologyName = "Tasks", RelativeUriReference = "usesResource")] public EntitySet<ProjectResource> ResourcesUsed { get; set; } }
Поиск на codeplex.com показывает наличие большого количества дополнительных инструментов для работы с семантическими хранилищами и форматами. Вот несколько из них:
- DMOZ Data Importer позволяет импортировать данные из Open Directory Project (ODP) в Microsoft SQL Server 2005;
- NJena Semantic Web Framework - переписанная с Java библиотека для построения семантических веб-приложений, позволяет работать с форматами RDF, RDFS, OWL, языком SPARQL;
- RTF DOM Parser позволяет строить DOM дерево на базе RTF документов.
Разработка и обработка семантических данных - непростая задача, требующая знания принципов организации семантических сетей и форматов представления данных.
RSS
В наше время трудно встретить сайты, которые не дают возможность подписаться на RSS-канал - удобное средство публикации новостей. Для чтения RSS лент написано большое количество софта - например, Google Reader, Яндекс Лента, feedly (список RSS-агрегаторов) и т.д. которые позволяют искать и читать новости, управлять своими подписками, а также комментировать и оценивать их.
В данный момент RSS расшифровывается как Really Simple Syndication и имеет версию 2.0. В более ранних версиях RSS означало:
- Rich Site Summary (RSS 0.9x) — обогащённая сводка сайта;
- RDF Site Summary (RSS 0.9 и 1.0) — сводка сайта с применением инфраструктуры описания ресурсов;
RSS является XML файлом, который имеет следующий формат:
<?xml version="1.0"?> <rss version="2.0"> <channel> <title>Liftoff News</title> <link>http://liftoff.msfc.nasa.gov/</link> <description>Liftoff to Space Exploration.</description> <language>en-us</language> <pubDate>Tue, 10 Jun 2003 04:00:00 GMT</pubDate> <lastBuildDate>Tue, 10 Jun 2003 09:41:01 GMT</lastBuildDate> <docs>http://blogs.law.harvard.edu/tech/rss</docs> <generator>Weblog Editor 2.0</generator> <managingEditor>editor@example.com</managingEditor> <webMaster>webmaster@example.com</webMaster> <item> <title>Star City</title> <link>http://liftoff.msfc.nasa.gov/news/2003/news-starcity.asp</link> <description>How do Americans get ready to work with Russians aboard the International Space Station? They take a crash course in culture, language and protocol at Russia's Star City.</description> <pubDate>Tue, 03 Jun 2003 09:39:21 GMT</pubDate> <guid>http://liftoff.msfc.nasa.gov/2003/06/03.html#item573</guid> </item> </channel> </rss>
Кроме RSS популярными форматами являются Atom и OPML.
Для работы с Atom и RSS в C# предусмотрены классы SyndicationFeed, Atom10FeedFormatter, Rss20FeedFormatter:
SyndicationFeed feed = new SyndicationFeed("Feed Title", "Feed Description", new Uri("http://Feed/Alternate/Link"), "FeedID", DateTime.Now); // создание SyndicationFeed // сериализация в формат Atom 1.0 XmlWriter atomWriter = XmlWriter.Create("atom.xml"); Atom10FeedFormatter atomFormatter = new Atom10FeedFormatter(feed); atomFormatter.WriteTo(atomWriter); atomWriter.Close(); // сериализация в формат RSS 2.0 XmlWriter rssWriter = XmlWriter.Create("rss.xml"); Rss20FeedFormatter rssFormatter = new Rss20FeedFormatter(feed); rssFormatter.WriteTo(rssWriter); rssWriter.Close();
Для работы с RSS в ASP.NET можно также воспользоваться библиотекой ASP.NET RSS Toolkit.
В следующей статье рассмотрим форматы OData, JSON и микроформаты.
Компании из статьи
Яндекс Украина
|
У Яндекса в Украине три офиса — головной в Одессе, где сосредоточен управленческий аппарат и отдел продаж, и два офиса разработки — киевский, занимающийся разработкой и управлением украинскими проекта... |
Microsoft Украина | Украинское подразделение компании Microsoft. |