<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="unqualified"
  xmlns="http://namespace.openaire.eu/oaf" targetNamespace="http://namespace.openaire.eu/oaf">

  <xs:annotation>
    <xs:documentation>This schema describes elements and properties of OpenAIRE+ entities of type
      result, namely: publications and datasets.</xs:documentation>
  </xs:annotation>

  <xs:include schemaLocation="oaf-common-0.1.xsd"/>

  <xs:element name="result">
    <xs:complexType>
      <xs:choice maxOccurs="unbounded">
        <xs:element name="subject" type="optionalClassedSchemedElement" maxOccurs="unbounded"/>
        <xs:element name="title" type="classedSchemedElement"/>
        <xs:element name="dateofacceptance" type="xs:string"/>
        <xs:element name="publisher" type="xs:string"/>
        <xs:element name="resulttype" type="classedSchemedElement">
          <xs:annotation>
            <xs:documentation>Tells if this record is about a publication or a
              dataset.</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="language" type="optionalClassedSchemedElement">
          <xs:annotation>
            <xs:documentation>Language in ISO 639-2></xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="journal" type="journalType"/>
        <xs:element name="description" type="xs:string" maxOccurs="unbounded"/>
        <xs:element name="source" type="xs:string">
          <xs:annotation>
            <xs:documentation>The semantics of this field is inherited from dc:source in Dublin
              Core.</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="relevantdate" type="optionalClassedSchemedElement"/>
        <xs:element name="embargoenddate" type="xs:string"/>
        <xs:element name="storagedate" type="xs:string"/>
        <xs:element name="fulltext" type="xs:string"/>
        <xs:element name="resourcetype" type="optionalClassedSchemedElement">
          <xs:annotation>
            <xs:documentation>Type of the resource, for example: article, thesis,
              etc.</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="device" type="xs:string"/>
        <xs:element name="size" type="xs:string"/>
        <xs:element name="format" type="xs:string"/>
        <xs:element name="version" type="xs:string"/>
        <xs:element name="lastmetadataupdate" type="xs:string"/>
        <xs:element name="metadataversionnumber" type="xs:string"/>
        <xs:element name="originalId" type="xs:string" maxOccurs="unbounded"/>
        <xs:element name="collectedfrom" type="namedIdElement" maxOccurs="unbounded">
          <xs:annotation>
            <xs:documentation>Identifier and name of the datasource from which this result has been
              collected from (e.g., "OpenDOAR").</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="pid" type="optionalClassedSchemedElement"/>
        <xs:element name="bestlicense" type="classedSchemedElement">
          <xs:annotation>
            <xs:documentation>The best license available for this result among the available
              licenses of its children elements. Available values are 12 Months Embargo, 6 Months
              Embargo, Closed Access, Embargo, Open Access, Other, Restricted,
              UNKNOWN.</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="context" type="contextType">
          <xs:annotation>
            <xs:documentation>Contextual information for the publication or dataset. Examples are:
              research project and funding.</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="datainfo" type="datainfoType"/>
        <xs:element name="rels" type="relsType">
          <xs:annotation>
            <xs:documentation>Relationships to other entities.</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="children" type="resultChildrenType"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="journalType">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute name="eissn" use="optional"/>
        <xs:attribute name="issn" use="optional"/>
        <xs:attribute name="lissn" use="optional"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="contextType">
    <xs:annotation>
      <xs:documentation>Contextual information of the entity. Examples are: research project and
        funding. </xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="labeledIdElement">
        <xs:sequence maxOccurs="unbounded">
          <xs:element name="category" type="categoryType"/>
        </xs:sequence>
        <xs:attribute name="type" use="required"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="categoryType">
    <xs:complexContent>
      <xs:extension base="labeledIdElement">
        <xs:sequence maxOccurs="unbounded">
          <xs:element name="concept" type="conceptType"/>
        </xs:sequence>
        <xs:attribute name="claim" type="xs:boolean"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="conceptType">
    <xs:complexContent>
      <xs:extension base="labeledIdElement">
        <xs:sequence maxOccurs="unbounded" minOccurs="0">
          <xs:element name="concept" type="conceptType"/>
        </xs:sequence>
        <xs:attribute name="claim" type="xs:boolean"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="resultChildrenType">
    <xs:choice maxOccurs="unbounded">
      <xs:element name="result" type="childrenResult" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="instance" type="instanceType" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>Actual digital representation of the publication or
            dataset.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:sequence maxOccurs="unbounded">
        <xs:element name="externalreference" type="externalreferenceType"/>
      </xs:sequence>
    </xs:choice>
  </xs:complexType>

  <xs:complexType name="childrenResult">
    <xs:choice maxOccurs="unbounded">
      <xs:element name="title" type="classedSchemedElement" maxOccurs="unbounded"/>
      <xs:element name="dateofacceptance" type="xs:string"/>
      <xs:element name="publisher" type="xs:string"/>
      <xs:element name="resulttype" type="classedSchemedElement"/>
    </xs:choice>
    <xs:attribute name="objidentifier" use="required"/>
  </xs:complexType>

  <xs:complexType name="instanceType">
    <xs:choice maxOccurs="unbounded">
      <xs:element name="licence" type="classedSchemedElement">
        <xs:annotation>
          <xs:documentation>License to access this actual manifestation of the publication or
            dataset. Available values are: 12 Months Embargo, 6 Months
            Embargo, Closed Access, Embargo, Open Access, Other, Restricted,
            UNKNOWN.. When several instances
            are available for the same publication, the opener license is selected as the bestlicese
            field in element result.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="instancetype" type="classedSchemedElement"/>
      <xs:element name="hostedby" type="namedIdElement" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Organisation hosting this file.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="webresource" type="webresourceType" minOccurs="1" maxOccurs="unbounded"/>
    </xs:choice>
    <xs:attribute name="id" use="required"/>
  </xs:complexType>

  <xs:complexType name="webresourceType">
    <xs:sequence>
      <xs:element name="url" type="xs:anyURI" minOccurs="1" maxOccurs="1"/>
    </xs:sequence>
  </xs:complexType>

</xs:schema>
