Permalink
Browse files

Первая версия формата данных: xml + xsd

  • Loading branch information...
xoposhiy committed Dec 28, 2012
1 parent 4655cc1 commit 65411750ee8f867c79cdd77bcbaf8024df2c9d63
Showing with 327 additions and 0 deletions.
  1. +51 −0 formats/xml-schema.csproj
  2. +20 −0 formats/xml-schema.sln
  3. +70 −0 formats/yarn.xml
  4. +186 −0 formats/yarn.xsd
View
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProjectGuid>{BEC48ED6-9C37-43DA-9447-82BC737862A5}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>xml_schemas</RootNamespace>
+ <AssemblyName>xml-schemas</AssemblyName>
+ <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Release\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <ItemGroup>
+ <Content Include="yarn.xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="yarn.xsd">
+ <SubType>Designer</SubType>
+ </None>
+ </ItemGroup>
+ <ItemGroup>
+ <Folder Include="Properties\" />
+ </ItemGroup>
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project>
View
@@ -0,0 +1,20 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2012
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "xml-schema", "xml-schema.csproj", "{BEC48ED6-9C37-43DA-9447-82BC737862A5}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {BEC48ED6-9C37-43DA-9447-82BC737862A5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {BEC48ED6-9C37-43DA-9447-82BC737862A5}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {BEC48ED6-9C37-43DA-9447-82BC737862A5}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {BEC48ED6-9C37-43DA-9447-82BC737862A5}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
View
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<yarn>
+ <words>
+ <wordEntry id="n1" approvedBy="pb" approvedWhen="2012-12-26T17:14:00Z" author="pb" version="2" timestamp="2012-12-26T17:12:00Z">
+ <!--первая буква в id: n, a, v — существительные, прилагательные и глаголы-->
+ <word>кошка</word>
+ <grammar>3*a</grammar>
+ <!-- строка, по классификации Зализняка http://ru.wiktionary.org/wiki/Викисловарь:Использование_словаря_Зализняка -->
+ <accent>2</accent>
+ <accent>5</accent>
+ <!-- может быть несколько правильных ударений -->
+ <url>http://ru.wiktionary.org/wiki/%D0%BA%D0%BE%D1%88%D0%BA%D0%B0</url>
+ <!-- ссылка на какой-то внешний источник-->
+ <url>http://ru.wiktionary.org/wiki/%D0%BA%D0%BE%D1%88%D0%BA%D0%B0</url>
+ <!-- может быть несколько-->
+ </wordEntry>
+
+ <wordEntry id="n2" author="pb" version="2" timestamp="2012-12-26T17:12:00Z">
+ <word>царская водка</word>
+ <url>http://ru.wikipedia.org/wiki/Царская_водка</url>
+ </wordEntry>
+
+ <wordEntry id="n3" author="pb" version="1" timestamp="2012-12-26T17:12:00Z">
+ <word>нечто</word>
+ </wordEntry>
+ </words>
+
+
+ <synsets>
+ <synsetEntry id="sn1" approvedBy="pb" approvedWhen="2012-12-26T17:14:00Z" author="pb" version="2" timestamp="2012-12-26T17:12:00Z">
+ <!-- слов может не быть вообще. Например: "столовые приборы", для объединения вилки и ложки связями is_a-->
+ <word ref="n3" nonStandardGrammar="true">
+ <mark>устар</mark> <!-- помета всегда внутри синсета, а не у самого слова -->
+ <sample url="http://e1.ru/forums" source="Пушкин">sadfsfdsd</sample>
+ <sample source="Пушкин">sadfsfdsd</sample>
+ <sample>sadfsfdsd</sample>
+ </word>
+ <word ref="n1"/>
+ <definition url="http://ru.wikipedia.org/wiki/Кошка" source="wikipedia">
+ домашнее животное, одно из наиболее популярных (наряду с собакой) «животных-компаньонов»
+ </definition>
+ <definition>
+ Говорит мяу-мяу. (Это определение придумал один из редакторов yarn-а. Поэтому у него нет ни источника, ни url-а.)
+ </definition>
+ <definition source="Толковый словарь Ушакова">
+ Самка кота.
+ </definition>
+ <definition url="http://ru.wiktionary.org/wiki/кошка"/>
+ <pwn synsetId="12345678"/>
+ </synsetEntry>
+
+ <synsetEntry id="sn2" approvedBy="pb" approvedWhen="2012-12-26T17:14:00Z" author="pb" version="2" timestamp="2012-12-26T17:12:00Z">
+ <definition>
+ Коммутативное кольцо без единицы. Слов, для описания этого смысла нет.
+ </definition>
+ </synsetEntry>
+ </synsets>
+
+ <synsetRelations>
+ <relationEntry id="r1" synset1="sn1" type="is_a" synset2="sn2" approvedBy="pb" approvedWhen="2012-12-26T17:14:00Z" author="pb" version="2" timestamp="2012-12-26T17:12:00Z" />
+ <relationEntry id="r2" synset1="sn1" type="part_of" synset2="sn2" author="pb" version="2" timestamp="2012-12-26T17:12:00Z" />
+ <relationEntry id="r3" synset1="sn2" type="sister" synset2="sn1" author="pb" version="2" timestamp="2012-12-26T17:12:00Z" />
+ <relationEntry id="r4" synset1="sn2" type="antonym" synset2="sn1" author="pb" version="2" timestamp="2012-12-26T17:12:00Z" />
+ </synsetRelations>
+
+ <wordRelations>
+ <wordRelationsEntry id="rw1" word1="n1" type="пока непонятно что" word2="n2" approvedBy="pb" approvedWhen="2012-12-26T17:14:00Z" author="pb" version="2" timestamp="2012-12-26T17:12:00Z" />
+ <wordRelationsEntry id="rw2" word1="n2" type="пока непонятно что" word2="n1" author="pb" version="2" timestamp="2012-12-26T17:12:00Z" />
+ </wordRelations>
+</yarn>
View
@@ -0,0 +1,186 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ >
+
+ <xs:complexType name="Entry">
+ <xs:annotation>
+ <xs:documentation>
+ Базовый тип, содержащий обязательные атрибуты всех остальных Entry.
+ Entry — единица, которую можно отредактировать и этот факт будет отражен в истории изменений.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:attribute name="id" type="xs:ID" use="required" />
+ <xs:attribute name="approvedBy" type="xs:string" use="optional"/>
+ <xs:attribute name="approvedWhen" type="xs:dateTime" use="optional" />
+ <xs:attribute name="author" type="xs:string" use="required" />
+ <xs:attribute name="version" type="xs:decimal" use="required" />
+ <xs:attribute name="deleted" type="xs:boolean" use="optional" default="false" />
+ <xs:attribute name="timestamp" type="xs:dateTime" use="required" />
+ </xs:complexType>
+
+ <xs:complexType name="WordEntry">
+ <xs:complexContent>
+ <xs:extension base="Entry">
+ <xs:sequence>
+ <xs:element minOccurs="1" maxOccurs="1" name="word" type="xs:string" />
+ <xs:element minOccurs="0" maxOccurs="1" name="grammar" type="xs:string">
+ <xs:annotation>
+ <xs:documentation>
+ По классификации Зализняка в нотации wiktionary http://ru.wiktionary.org/wiki/Викисловарь:Использование_словаря_Зализняка
+ Печь-существительное и печь-глагол должны попасть в разные WordEntry.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="accent" type="xs:unsignedByte" />
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="url" type="xs:anyURI" />
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:simpleType name="Mark">
+ <xs:annotation>
+ <xs:documentation>Пометы: устар., разг., ... </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <!-- TODO: Нужно сделать перечисление-->
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:complexType name="SynsetEntry">
+ <xs:complexContent>
+ <xs:extension base="Entry">
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="word">
+ <xs:complexType>
+ <xs:sequence minOccurs="0" maxOccurs="1">
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="mark" type="Mark"/>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="sample">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="url" type="xs:anyURI" use="optional" />
+ <xs:attribute name="source" type="xs:string" use="optional">
+ <xs:annotation>
+ <xs:documentation>Источник, не имеющий URL-а. Например, "Толковый словарь Ушакова"</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ <xs:attribute name="ref" type="xs:IDREF" use="required" />
+ <xs:attribute name="nonStandardGrammar" type="xs:boolean" use="optional" default="false">
+ <xs:annotation>
+ <xs:documentation>
+ Пометка о том, что в этом смысле, грамматическая информация как-то искажается.
+ Например, часы в смысле прибора, показывающего время, не имеют единственного числа.
+ Решили пока не придумывать способ кодирования этой информации, а просто помечать такие слова,
+ чтобы потом можно будет вернуться и разработать способ кодирования, глядя на накопленные примеры.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="1" maxOccurs="unbounded" name="definition">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="url" type="xs:anyURI" use="optional" />
+ <xs:attribute name="source" type="xs:string" use="optional" />
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="0" maxOccurs="1" name="pwn">
+ <xs:annotation>
+ <xs:documentation>Номер соответсвтующего синсета в Принстанском wordnet-е</xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:attribute name="synsetId" type="xs:string" use="required" />
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="SynsetRelationEntry">
+ <xs:complexContent>
+ <xs:extension base="Entry">
+ <xs:attribute name="synset1" type="xs:IDREF" use="required" />
+ <xs:attribute name="type" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="is_a" />
+ <xs:enumeration value="part_of" />
+ <xs:enumeration value="antonym" />
+ <xs:enumeration value="sister">
+ <xs:annotation>
+ <xs:documentation>
+ Например, вилка и ложка. Видимо, это некоторая избыточность. Например, вилка и ложка должны быть оба "is_a столовые приборы".
+ Но избыточность полезная. Гораздо проще поставить sister между существующими синсетами, чем добавлять синсет-обобщение.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:enumeration>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="synset2" type="xs:IDREF" use="required" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="WordRelationEntry">
+ <xs:complexContent>
+ <xs:extension base="Entry">
+ <xs:attribute name="word1" type="xs:IDREF" use="required" />
+ <xs:attribute name="type" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <!-- TODO: создать перечисление -->
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="word2" type="xs:IDREF" use="required" />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="yarn">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="words">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="wordEntry" type="WordEntry" />
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="synsets">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="synsetEntry" type="SynsetEntry"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="synsetRelations">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="relationEntry" type="SynsetRelationEntry" />
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="wordRelations">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="wordRelationsEntry" type="WordRelationEntry"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>

0 comments on commit 6541175

Please sign in to comment.