From 9bae32595a74d8b43896fd74b1a97d1919f0d35d Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 9 Mar 2026 14:32:11 +0000 Subject: [PATCH 1/4] Add followthemoney 4.6.0 schema and regenerate code Download schema files for FTM 4.6.0 and run code generator to update generated entities and FTM entity types. https://claude.ai/code/session_0171TgDhFJm4eu3mptCAinGE --- schemas/4.6.0/Address.yaml | 75 +++++++++ schemas/4.6.0/Airplane.yaml | 27 ++++ schemas/4.6.0/Analyzable.yaml | 53 +++++++ schemas/4.6.0/Article.yaml | 16 ++ schemas/4.6.0/Asset.yaml | 15 ++ schemas/4.6.0/Associate.yaml | 41 +++++ schemas/4.6.0/Audio.yaml | 24 +++ schemas/4.6.0/BankAccount.yaml | 69 +++++++++ schemas/4.6.0/Call.yaml | 48 ++++++ schemas/4.6.0/CallForTenders.yaml | 117 ++++++++++++++ schemas/4.6.0/Company.yaml | 107 +++++++++++++ schemas/4.6.0/Contract.yaml | 76 +++++++++ schemas/4.6.0/ContractAward.yaml | 69 +++++++++ schemas/4.6.0/CourtCase.yaml | 38 +++++ schemas/4.6.0/CourtCaseParty.yaml | 35 +++++ schemas/4.6.0/CryptoWallet.yaml | 53 +++++++ schemas/4.6.0/Debt.yaml | 37 +++++ schemas/4.6.0/Directorship.yaml | 42 +++++ schemas/4.6.0/Document.yaml | 117 ++++++++++++++ schemas/4.6.0/Documentation.yaml | 38 +++++ schemas/4.6.0/EconomicActivity.yaml | 137 +++++++++++++++++ schemas/4.6.0/Email.yaml | 76 +++++++++ schemas/4.6.0/Employment.yaml | 39 +++++ schemas/4.6.0/Event.yaml | 40 +++++ schemas/4.6.0/Family.yaml | 44 ++++++ schemas/4.6.0/Folder.yaml | 13 ++ schemas/4.6.0/HyperText.yaml | 21 +++ schemas/4.6.0/Identification.yaml | 44 ++++++ schemas/4.6.0/Image.yaml | 32 ++++ schemas/4.6.0/Interest.yaml | 15 ++ schemas/4.6.0/Interval.yaml | 88 +++++++++++ schemas/4.6.0/LegalEntity.yaml | 214 ++++++++++++++++++++++++++ schemas/4.6.0/License.yaml | 27 ++++ schemas/4.6.0/Membership.yaml | 39 +++++ schemas/4.6.0/Mention.yaml | 54 +++++++ schemas/4.6.0/Message.yaml | 78 ++++++++++ schemas/4.6.0/Note.yaml | 23 +++ schemas/4.6.0/Occupancy.yaml | 62 ++++++++ schemas/4.6.0/Organization.yaml | 46 ++++++ schemas/4.6.0/Ownership.yaml | 56 +++++++ schemas/4.6.0/Package.yaml | 17 ++ schemas/4.6.0/Page.yaml | 42 +++++ schemas/4.6.0/Pages.yaml | 23 +++ schemas/4.6.0/Passport.yaml | 47 ++++++ schemas/4.6.0/Payment.yaml | 81 ++++++++++ schemas/4.6.0/Person.yaml | 120 +++++++++++++++ schemas/4.6.0/PlainText.yaml | 17 ++ schemas/4.6.0/Position.yaml | 46 ++++++ schemas/4.6.0/Project.yaml | 27 ++++ schemas/4.6.0/ProjectParticipant.yaml | 36 +++++ schemas/4.6.0/PublicBody.yaml | 21 +++ schemas/4.6.0/RealEstate.yaml | 59 +++++++ schemas/4.6.0/Representation.yaml | 36 +++++ schemas/4.6.0/Risk.yaml | 43 ++++++ schemas/4.6.0/Sanction.yaml | 70 +++++++++ schemas/4.6.0/Security.yaml | 59 +++++++ schemas/4.6.0/Similar.yaml | 37 +++++ schemas/4.6.0/Succession.yaml | 36 +++++ schemas/4.6.0/Table.yaml | 32 ++++ schemas/4.6.0/TaxRoll.yaml | 40 +++++ schemas/4.6.0/Thing.yaml | 139 +++++++++++++++++ schemas/4.6.0/Trip.yaml | 42 +++++ schemas/4.6.0/UnknownLink.yaml | 36 +++++ schemas/4.6.0/UserAccount.yaml | 47 ++++++ schemas/4.6.0/Value.yaml | 17 ++ schemas/4.6.0/Vehicle.yaml | 56 +++++++ schemas/4.6.0/Vessel.yaml | 59 +++++++ schemas/4.6.0/Video.yaml | 20 +++ schemas/4.6.0/Workbook.yaml | 18 +++ src/generated/entities.rs | 41 +++-- src/generated/ftm_entity.rs | 38 +++-- 71 files changed, 3622 insertions(+), 25 deletions(-) create mode 100644 schemas/4.6.0/Address.yaml create mode 100644 schemas/4.6.0/Airplane.yaml create mode 100644 schemas/4.6.0/Analyzable.yaml create mode 100644 schemas/4.6.0/Article.yaml create mode 100644 schemas/4.6.0/Asset.yaml create mode 100644 schemas/4.6.0/Associate.yaml create mode 100644 schemas/4.6.0/Audio.yaml create mode 100644 schemas/4.6.0/BankAccount.yaml create mode 100644 schemas/4.6.0/Call.yaml create mode 100644 schemas/4.6.0/CallForTenders.yaml create mode 100644 schemas/4.6.0/Company.yaml create mode 100644 schemas/4.6.0/Contract.yaml create mode 100644 schemas/4.6.0/ContractAward.yaml create mode 100644 schemas/4.6.0/CourtCase.yaml create mode 100644 schemas/4.6.0/CourtCaseParty.yaml create mode 100644 schemas/4.6.0/CryptoWallet.yaml create mode 100644 schemas/4.6.0/Debt.yaml create mode 100644 schemas/4.6.0/Directorship.yaml create mode 100644 schemas/4.6.0/Document.yaml create mode 100644 schemas/4.6.0/Documentation.yaml create mode 100644 schemas/4.6.0/EconomicActivity.yaml create mode 100644 schemas/4.6.0/Email.yaml create mode 100644 schemas/4.6.0/Employment.yaml create mode 100644 schemas/4.6.0/Event.yaml create mode 100644 schemas/4.6.0/Family.yaml create mode 100644 schemas/4.6.0/Folder.yaml create mode 100644 schemas/4.6.0/HyperText.yaml create mode 100644 schemas/4.6.0/Identification.yaml create mode 100644 schemas/4.6.0/Image.yaml create mode 100644 schemas/4.6.0/Interest.yaml create mode 100644 schemas/4.6.0/Interval.yaml create mode 100644 schemas/4.6.0/LegalEntity.yaml create mode 100644 schemas/4.6.0/License.yaml create mode 100644 schemas/4.6.0/Membership.yaml create mode 100644 schemas/4.6.0/Mention.yaml create mode 100644 schemas/4.6.0/Message.yaml create mode 100644 schemas/4.6.0/Note.yaml create mode 100644 schemas/4.6.0/Occupancy.yaml create mode 100644 schemas/4.6.0/Organization.yaml create mode 100644 schemas/4.6.0/Ownership.yaml create mode 100644 schemas/4.6.0/Package.yaml create mode 100644 schemas/4.6.0/Page.yaml create mode 100644 schemas/4.6.0/Pages.yaml create mode 100644 schemas/4.6.0/Passport.yaml create mode 100644 schemas/4.6.0/Payment.yaml create mode 100644 schemas/4.6.0/Person.yaml create mode 100644 schemas/4.6.0/PlainText.yaml create mode 100644 schemas/4.6.0/Position.yaml create mode 100644 schemas/4.6.0/Project.yaml create mode 100644 schemas/4.6.0/ProjectParticipant.yaml create mode 100644 schemas/4.6.0/PublicBody.yaml create mode 100644 schemas/4.6.0/RealEstate.yaml create mode 100644 schemas/4.6.0/Representation.yaml create mode 100644 schemas/4.6.0/Risk.yaml create mode 100644 schemas/4.6.0/Sanction.yaml create mode 100644 schemas/4.6.0/Security.yaml create mode 100644 schemas/4.6.0/Similar.yaml create mode 100644 schemas/4.6.0/Succession.yaml create mode 100644 schemas/4.6.0/Table.yaml create mode 100644 schemas/4.6.0/TaxRoll.yaml create mode 100644 schemas/4.6.0/Thing.yaml create mode 100644 schemas/4.6.0/Trip.yaml create mode 100644 schemas/4.6.0/UnknownLink.yaml create mode 100644 schemas/4.6.0/UserAccount.yaml create mode 100644 schemas/4.6.0/Value.yaml create mode 100644 schemas/4.6.0/Vehicle.yaml create mode 100644 schemas/4.6.0/Vessel.yaml create mode 100644 schemas/4.6.0/Video.yaml create mode 100644 schemas/4.6.0/Workbook.yaml diff --git a/schemas/4.6.0/Address.yaml b/schemas/4.6.0/Address.yaml new file mode 100644 index 0000000..76adcfc --- /dev/null +++ b/schemas/4.6.0/Address.yaml @@ -0,0 +1,75 @@ +# OSM: https://wiki.openstreetmap.org/wiki/Proposed_features/House_numbers/Karlsruhe_Schema#Tags +# Seen in the wild: +# +# - full +# - remarks / note +# - c/o +# - location +# - unknown +# - address-details / street +# - house number / house name +# - address1 / address2 / address3 +# - city +# - po box +# - zip code / postcode / postal_code +# - region +# - area / state / province +# - country +Address: + label: Address + plural: Addresses + extends: + - Thing + description: > + A location associated with an entity. + matchable: true + generated: false + featured: + - full + - city + - street + - country + caption: + - full + - summary + - city + - remarks + properties: + full: + label: "Full address" + type: address + remarks: + label: "Remarks" + description: "Handling instructions, like 'care of'" + postOfficeBox: + label: "PO Box" + description: "A mailbox identifier at the post office" + street: + label: "Street address" + street2: + label: "Street address (ctd.)" + city: + label: "City" + description: "City, town, village or other locality" + postalCode: + label: "Postal code" + description: "Zip code or postcode" + maxLength: 16 + region: + label: "Region" + description: "Also province or area" + state: + label: "State" + description: "State or federal unit" + latitude: + label: "Latitude" + type: "number" + longitude: + label: "Longitude" + type: "number" + osmId: + label: "OpenStreetmap Place ID" + type: "identifier" + googlePlaceId: + label: "Google Places ID" + type: "identifier" diff --git a/schemas/4.6.0/Airplane.yaml b/schemas/4.6.0/Airplane.yaml new file mode 100644 index 0000000..a38b11c --- /dev/null +++ b/schemas/4.6.0/Airplane.yaml @@ -0,0 +1,27 @@ +Airplane: + label: Airplane + plural: Airplanes + extends: + - Vehicle + description: > + An airplane, helicopter or other flying vehicle. + matchable: true + featured: + - type # Airbus A320 214SL + - registrationNumber # A7-LAE + - country # Qatar + - operator # Qatar Airways + - owner # Qatar Airways + caption: + - name + - registrationNumber + properties: + serialNumber: # 36576093870 + label: Serial Number + type: identifier + icaoCode: # A320 + label: ICAO aircraft type designator + type: identifier + maxLength: 16 + manufacturer: # Airbus + label: Manufacturer diff --git a/schemas/4.6.0/Analyzable.yaml b/schemas/4.6.0/Analyzable.yaml new file mode 100644 index 0000000..4fb4cd6 --- /dev/null +++ b/schemas/4.6.0/Analyzable.yaml @@ -0,0 +1,53 @@ +Analyzable: + label: Analyzable + plural: Analyzables + description: > + An entity suitable for being processed via named-entity recognition. + abstract: true + matchable: false + generated: true + properties: + detectedLanguage: + label: "Detected language" + matchable: false + hidden: true + type: language + detectedCountry: + label: "Detected country" + matchable: false + hidden: true + type: country + namesMentioned: + label: "Detected names" + hidden: true + type: name + peopleMentioned: + label: "Detected people" + hidden: true + type: name + companiesMentioned: + label: "Detected companies" + hidden: true + type: name + ibanMentioned: + label: "Detected IBANs" + hidden: true + type: identifier + format: iban + ipMentioned: + label: "Detected IP addresses" + hidden: true + type: ip + locationMentioned: + label: "Detected locations" + hidden: true + matchable: false + type: address + phoneMentioned: + label: "Detected phones" + hidden: true + type: phone + emailMentioned: + label: "Detected e-mail addresses" + hidden: true + type: email diff --git a/schemas/4.6.0/Article.yaml b/schemas/4.6.0/Article.yaml new file mode 100644 index 0000000..07aab53 --- /dev/null +++ b/schemas/4.6.0/Article.yaml @@ -0,0 +1,16 @@ +Article: + extends: + - Document + label: Article + plural: Articles + description: > + A piece of media reporting about a subject. + matchable: false + generated: true + featured: + - title + - author + - publishedAt + caption: + - title + - fileName diff --git a/schemas/4.6.0/Asset.yaml b/schemas/4.6.0/Asset.yaml new file mode 100644 index 0000000..eb422ec --- /dev/null +++ b/schemas/4.6.0/Asset.yaml @@ -0,0 +1,15 @@ +Asset: + label: Asset + plural: Assets + description: > + A piece of property which can be owned and assigned a monetary value. + extends: + - Thing + - Value + featured: + - name + - amount + caption: + - name + abstract: false + matchable: false diff --git a/schemas/4.6.0/Associate.yaml b/schemas/4.6.0/Associate.yaml new file mode 100644 index 0000000..b322772 --- /dev/null +++ b/schemas/4.6.0/Associate.yaml @@ -0,0 +1,41 @@ +Associate: + label: "Associate" + plural: "Associates" + description: "Non-family association between two people." + extends: + - Interval + matchable: false + featured: + - person + - associate + - relationship + required: + - person + - associate + edge: + source: person + label: "associated with" + target: associate + directed: false + caption: + - relationship + properties: + person: + label: "Person" + description: "The subject of the association" + type: entity + range: Person + reverse: + name: associates + label: "Associates" + associate: + label: "Associate" + description: "An associate of the subject person" + type: entity + range: Person + reverse: + name: associations + label: "Associations" + relationship: + label: "Relationship" + description: "Nature of the association" diff --git a/schemas/4.6.0/Audio.yaml b/schemas/4.6.0/Audio.yaml new file mode 100644 index 0000000..f6d2a11 --- /dev/null +++ b/schemas/4.6.0/Audio.yaml @@ -0,0 +1,24 @@ +Audio: + extends: + - Document + label: Audio + plural: Audio files + matchable: false + generated: true + featured: + - title + - fileName + - mimeType + - parent + caption: + - fileName + - title + properties: + duration: + label: "Duration" + description: "Duration of the audio in ms" + type: number + samplingRate: + label: "Sampling Rate" + description: "Sampling rate of the audio in Hz" + type: number diff --git a/schemas/4.6.0/BankAccount.yaml b/schemas/4.6.0/BankAccount.yaml new file mode 100644 index 0000000..9b613e5 --- /dev/null +++ b/schemas/4.6.0/BankAccount.yaml @@ -0,0 +1,69 @@ +BankAccount: + label: Bank account + plural: Bank accounts + extends: + - Asset + description: > + An account held at a bank and controlled by an owner. This may also be used + to describe more complex arrangements like correspondent bank settlement accounts. + matchable: true + featured: + - accountNumber + - bankName + # required: + # - accountNumber + caption: + - name + - iban + - accountNumber + temporalExtent: + start: + - openingDate + end: + - closingDate + properties: + bankName: + label: Bank name + accountNumber: + label: Account number + type: identifier + maxLength: 64 + iban: + label: IBAN + type: identifier + format: iban + maxLength: 64 + bic: + label: Bank Identifier Code + type: identifier + format: bic + maxLength: 16 + bank: + label: Bank + type: entity + range: Organization + reverse: + name: bankAccounts + label: "Bank accounts" + accountType: + label: Account type + openingDate: + label: Opening date + type: date + closingDate: + label: Closing date + type: date + balance: + label: Balance + type: number + balanceDate: + label: Balance date + type: date + maxBalance: + label: Maximum balance + type: number + maxBalanceDate: + label: Maximum balance date + type: date + bankAddress: + label: Bank address diff --git a/schemas/4.6.0/Call.yaml b/schemas/4.6.0/Call.yaml new file mode 100644 index 0000000..b11633f --- /dev/null +++ b/schemas/4.6.0/Call.yaml @@ -0,0 +1,48 @@ +Call: + extends: + - Interval + label: "Call" + plural: "Calls" + matchable: false + generated: true + featured: + - callerNumber + - caller + - receiverNumber + - receiver + - date + caption: + - callerNumber + - receiverNumber + properties: + caller: + label: "Caller" + type: entity + range: LegalEntity + reverse: + name: callsMade + label: "Calls made" + callerNumber: + label: "Caller's Number" + type: phone + receiver: + label: "Receiver" + type: entity + range: LegalEntity + reverse: + name: callsReceived + label: "Calls received" + receiverNumber: + label: "Receiver's Number" + type: phone + duration: + label: "Duration" + descriptuon: "Call Duration in seconds" + type: number + # recording: + # label: "Recording of the call" + # type: entity + # range: Audio + # reverse: + # name: "recordedCall" + # label: "Recording of" diff --git a/schemas/4.6.0/CallForTenders.yaml b/schemas/4.6.0/CallForTenders.yaml new file mode 100644 index 0000000..0afe436 --- /dev/null +++ b/schemas/4.6.0/CallForTenders.yaml @@ -0,0 +1,117 @@ +CallForTenders: + label: "Call for tenders" + plural: "Calls for tenders" + description: > + A public appeal issued by an authority, possibly on behalf of another, + for buying a specific work, supply or service. + extends: + - Thing + - Interval + matchable: false + required: + - title + - authority + featured: + - title + - authority + caption: + - title + properties: + callId: + label: "CfT unique id" + type: identifier + title: + label: "Title" + authority: + label: "Name of contracting authority" + reverse: + name: callForTenders + label: "Call For Tenders" + type: entity + range: LegalEntity + authorityReferenceId: + label: "Contracting authority reference ID" + type: identifier + onBehalfOf: + label: "Published on behalf of" + reverse: + name: delegatedCallForTenders + label: "Delegated call for tenders" + type: entity + range: LegalEntity + publicationDate: + label: "Date of publication/invitation" + type: date + evaluationMechanism: + label: "Evaluation mechanism" + procurementType: + label: "Procurement type" + directive: + label: "Directive" + procedure: + label: "Procedure" + involvesOutcome: + label: "Call for tenders result" + description: "The nature of the contractual agreement that will result from this CfT" + cpvCode: + label: "CPV code" + description: "Common Procurement Vocabulary (CPV)" + type: identifier + reverseAuctionsIncluded: + label: "Inclusion of e-Auctions" + # cf. https://mita.gov.mt/2021/10/05/reverse-bidding-for-data-connectivity-across-the-public-service-a-first-for-malta/ + nutsCode: + label: "NUTS code" + description: "Nomenclature of Territorial Units for Statistics (NUTS)" + type: identifier + relationToThreshold: + label: "Above or below threshold" + paymentOptions: + label: "Payment options" + submissionDeadline: + label: "Submission deadline" + type: date + clarificationDeadline: + label: "End of clarification period" + type: date + awardedInLots: + label: "Contract awarded in Lots" + numberOfLots: + label: "Number of lots" + type: number + lotsNames: + label: "Lots names" + tendersForLots: + # What does this mean? + label: "Tenders for lots" + maximumNumberOfLots: + label: "Maximum number of lots" + type: number + euFunding: + label: "EU funding" + multipleTenders: + label: "Multiple tenders will be accepted" + tedUrl: + label: "TED link for published notices" + type: url + fallsUnderGPPScope: + label: "Does this call fall under the scope of GPP?" + description: "European Green Public Procurement (GPP) or green purchasing" + certificationCheck: + label: "Certification check" + awardingDate: + label: "Date of awarding" + type: date + contractNoticeDate: + label: "Contract notice date" + type: date + awardNoticeDate: + label: "Award Notice Date" + type: date + tenderers: + label: "Tenderers" + reverse: + name: callForTenders + label: "Tender" + type: entity + range: LegalEntity diff --git a/schemas/4.6.0/Company.yaml b/schemas/4.6.0/Company.yaml new file mode 100644 index 0000000..03d198b --- /dev/null +++ b/schemas/4.6.0/Company.yaml @@ -0,0 +1,107 @@ +Company: + label: Company + plural: Companies + description: > + A corporation, usually for profit. Does not distinguish between private and public + companies, and can also be used to model more specific constructs like trusts and + funds. Companies are assets, so they can be owned by other legal entities. + matchable: true + extends: + - Organization + - Asset + featured: + - name + - jurisdiction + - registrationNumber + - incorporationDate + required: + - name + caption: + - name + - alias + - abbreviation + - weakAlias + - previousName + - registrationNumber + properties: + capital: + label: "Capital" + type: number + voenCode: + label: "VOEN" + description: "Azerbaijan taxpayer ID" + type: identifier + maxLength: 32 + coatoCode: + label: "COATO / SOATO / OKATO" + type: identifier + description: "Soviet classifier for territories, regions, districts, villages. Aka. SOATO and same as OKATO." + matchable: false + irsCode: + label: "IRS Number" + description: "US tax ID" + type: identifier + ipoCode: + label: "IPO" + type: identifier + matchable: false + cikCode: + label: "SEC Central Index Key" + description: "US SEC Central Index Key for listed companies" + type: identifier + jibCode: + label: "JIB" + description: "Yugoslavia company ID" + type: identifier + mbsCode: + label: "MBS" + type: identifier + caemCode: + label: "COD CAEM" + description: "Romanian classifier used to identify the types of economic activities that a business can provide in Romania" + matchable: false + kppCode: + label: "KPP" + description: "(RU, КПП) Russian code issued by the tax authority, identifies the reason for registration at the Federal Tax Service. A company may have multiple KPP codes (e.g. for different branches), and the codes are not unique across companies." + type: identifier + matchable: false + okvedCode: + label: "OKVED(2) Classifier" + description: "(RU, ОКВЭД) Russian classifier that categorizes businesses by their (primary and secondary) economic activities" + matchable: false + okopfCode: + label: "OKOPF" + description: "(RU, ОКОПФ) Russian classifier that categorizes different types of legal entities in Russia based on their organizational and legal structure" + matchable: false + fnsCode: + label: "Federal tax service code" + description: "(RU, ФНС) Federal Tax Service related info" + type: identifier + matchable: false + fssCode: + label: "FSS" + description: "(RU, ФСС) Social Security" + bikCode: + label: "BIK" + description: "Russian bank account code" + type: identifier + pfrNumber: + label: "PFR Number" + description: "(RU, ПФР) Pension Fund Registration number. AAA-BBB-CCCCCC, where AAA is organisation region, BBB is district, and CCCCCC is the number at a specific branch." + type: identifier + oksmCode: + label: OKSM + description: "(RU, ОКСМ) Russian countries classifier" + matchable: false + isinCode: + label: ISIN + description: International Securities Identification Number + type: identifier + deprecated: true + ticker: + label: Stock ticker symbol + type: identifier + ricCode: + label: Reuters Instrument Code + type: identifier + maxLength: 16 diff --git a/schemas/4.6.0/Contract.yaml b/schemas/4.6.0/Contract.yaml new file mode 100644 index 0000000..7386456 --- /dev/null +++ b/schemas/4.6.0/Contract.yaml @@ -0,0 +1,76 @@ +Contract: + label: "Contract" + plural: "Contracts" + description: > + A contract or contract lot issued by an authority. Multiple lots + may be awarded to different suppliers (see `ContractAward`). + extends: + - Asset + matchable: false + featured: + - title + - amount + - authority + - contractDate + required: + - title + caption: + - title + - name + - procedureNumber + temporalExtent: + start: + - contractDate + properties: + title: + label: "Title" + type: string + authority: + label: "Contract authority" + plural: "Contract authorities" + reverse: + name: contractAuthority + label: "Contracts issued" + type: entity + range: LegalEntity + project: + label: "Project" + reverse: + name: contracts + label: "Contracts" + type: entity + range: Project + type: + label: "Type" + description: "Type of contract" + examples: + - W (Works) + - U (Supplies) + - S (Services) + contractDate: + label: "Contract date" + type: date + procedureNumber: + label: "Procedure number" + procedure: + label: "Contract procedure" + noticeId: + label: "Contract Award Notice ID" + numberAwards: + label: "Number of awards" + status: + label: "Status" + examples: + - In force + - Annulled + method: + label: "Procurement method" + criteria: + label: Contract award criteria + classification: + label: Classification + cancelled: + label: "Cancelled?" + language: + label: "Language" + type: language diff --git a/schemas/4.6.0/ContractAward.yaml b/schemas/4.6.0/ContractAward.yaml new file mode 100644 index 0000000..6b57aa4 --- /dev/null +++ b/schemas/4.6.0/ContractAward.yaml @@ -0,0 +1,69 @@ +ContractAward: + label: "Contract award" + plural: "Contract awards" + description: "A contract or contract lot as awarded to a supplier." + matchable: false + extends: + - Value + - Interest + required: + - supplier + - contract + featured: + - supplier + - contract + - amount + - lotNumber + - decisionReason + edge: + source: contract + label: "awarded to" + target: supplier + directed: true + caption: + - lotNumber + properties: + supplier: + label: "Supplier" + description: "The entity the contract was awarded to" + plural: "Suppliers" + reverse: + name: contractAwardSupplier + label: "Contracts awarded" + type: entity + range: LegalEntity + contract: + label: "Contract" + plural: "Contracts" + reverse: + name: awards + label: "Lots awarded" + type: entity + range: Contract + callForTenders: + label: "Call For Tenders" + type: entity + reverse: + name: contractAwards + label: "Contract Awards" + range: CallForTenders + lotNumber: + label: "Lot number" + documentNumber: + label: "Document number" + documentType: + label: "Document type" + decisionReason: + label: "Decision reason" + type: text + cpvCode: + label: "CPV code" + description: "Contract Procurement Vocabulary (what type of goods/services, EU)" + type: identifier + nutsCode: + label: "NUTS code" + description: "Nomencalture of Territorial Units for Statistics (NUTS)" + type: identifier + amended: + label: "Amended" + description: "Was this award amended, modified or updated by a subsequent document?" diff --git a/schemas/4.6.0/CourtCase.yaml b/schemas/4.6.0/CourtCase.yaml new file mode 100644 index 0000000..3e835d5 --- /dev/null +++ b/schemas/4.6.0/CourtCase.yaml @@ -0,0 +1,38 @@ +CourtCase: + label: Court case + plural: Court cases + extends: + - Thing + matchable: false + featured: + - name + - fileDate + - caseNumber + required: + - name + caption: + - name + - caseNumber + temporalExtent: + start: + - fileDate + end: + - closeDate + properties: + category: + label: Category + type: + label: Type + status: + label: Status + caseNumber: + label: Case number + type: identifier + court: + label: Court + fileDate: + label: File date + type: date + closeDate: + label: Close date + type: date diff --git a/schemas/4.6.0/CourtCaseParty.yaml b/schemas/4.6.0/CourtCaseParty.yaml new file mode 100644 index 0000000..fdc3e75 --- /dev/null +++ b/schemas/4.6.0/CourtCaseParty.yaml @@ -0,0 +1,35 @@ +CourtCaseParty: + label: "Case party" + plural: "Case parties" + extends: + - Interest + matchable: false + featured: + - party + - case + - role + required: + - case + - party + edge: + source: party + label: "involved in" + target: case + directed: true + caption: + - role + properties: + party: + label: "Party" + reverse: + name: courtCase + label: "Court cases" + type: entity + range: Thing + case: + label: "Case" + reverse: + name: parties + label: "Parties" + type: entity + range: CourtCase diff --git a/schemas/4.6.0/CryptoWallet.yaml b/schemas/4.6.0/CryptoWallet.yaml new file mode 100644 index 0000000..f36ccf3 --- /dev/null +++ b/schemas/4.6.0/CryptoWallet.yaml @@ -0,0 +1,53 @@ +CryptoWallet: + label: Cryptocurrency wallet + plural: Cryptocurrency wallets + extends: + - Thing + - Value + description: > + A cryptocurrency wallet is a view on the transactions conducted by one participant + on a blockchain / distributed ledger system. + matchable: true + featured: + - currency + - publicKey + caption: + - publicKey + - name + - summary + temporalExtent: + start: + - creationDate + properties: + publicKey: + # FIXME: this is a very unusual name for this. what do the bros call it??? + label: Address + description: Public key used to identify the wallet + type: identifier + maxLength: 128 + privateKey: + label: Private key + accountId: + label: Account ID + description: Platform-specific user/account identifier + type: identifier + creationDate: + label: Creation date + type: date + currencySymbol: + label: Currency short code + managingExchange: + label: Managing exchange + holder: + label: Wallet holder + type: entity + range: LegalEntity + reverse: + name: cryptoWallets + label: "Cryptocurrency wallets" + balance: + label: Balance + type: number + balanceDate: + label: Balance date + type: date diff --git a/schemas/4.6.0/Debt.yaml b/schemas/4.6.0/Debt.yaml new file mode 100644 index 0000000..9b23145 --- /dev/null +++ b/schemas/4.6.0/Debt.yaml @@ -0,0 +1,37 @@ +Debt: + label: "Debt" + plural: "Debts" + description: "A monetary debt between two parties." + matchable: false + extends: + - Interval + - Value + required: + - debtor + featured: + - debtor + - creditor + - date + - amount + edge: + source: debtor + label: "owes" + target: creditor + directed: true + caption: + - amount + properties: + debtor: + label: "Debtor" + reverse: + name: debtDebtor + label: "Debts" + type: entity + range: LegalEntity + creditor: + label: "Creditor" + reverse: + name: debtCreditor + label: "Credits" + type: entity + range: LegalEntity diff --git a/schemas/4.6.0/Directorship.yaml b/schemas/4.6.0/Directorship.yaml new file mode 100644 index 0000000..dc9d91d --- /dev/null +++ b/schemas/4.6.0/Directorship.yaml @@ -0,0 +1,42 @@ +Directorship: + label: "Directorship" + plural: "Directorships" + extends: + - Interest + matchable: false + featured: + - director + - organization + - role + - startDate + - endDate + required: + - director + - organization + caption: + - role + edge: + source: director + label: "directs" + target: organization + directed: true + caption: + - role + properties: + director: + label: "Director" + description: "The entity exercising control over another" + reverse: + name: directorshipDirector + label: "Directorships" + type: entity + range: LegalEntity + organization: + label: "Organization" + reverse: + name: directorshipOrganization + label: "Directors" + type: entity + range: Organization + secretary: + label: "Secretary" diff --git a/schemas/4.6.0/Document.yaml b/schemas/4.6.0/Document.yaml new file mode 100644 index 0000000..1df51ef --- /dev/null +++ b/schemas/4.6.0/Document.yaml @@ -0,0 +1,117 @@ +Document: + extends: + - Thing + - Analyzable + label: File + plural: Files + matchable: false + generated: true + featured: + - title + - fileName + - mimeType + - parent + required: + - fileName + caption: + - fileName + - title + temporalExtent: + start: + - date + - authoredAt + - publishedAt + properties: + contentHash: + label: "Checksum" + description: "SHA1 hash of the data" + # hidden: true + type: checksum + title: + label: "Title" + type: string + caption: true + author: + label: "Author" + description: "The original author, not the uploader" + generator: + label: "Generator" + description: "The program used to generate this file" + crawler: + label: "Crawler" + description: "The crawler used to acquire this file" + fileSize: + label: "File size" + type: number + fileName: + label: "File name" + extension: + label: "File extension" + encoding: + label: "File encoding" + bodyText: + label: "Text" + hidden: true + type: "text" + messageId: + label: "Message ID" + description: "Message ID of a document; unique in most cases" + mimeType: + label: "MIME type" + type: mimetype + language: + label: "Language" + type: language + translatedLanguage: + label: "The language of the translated text" + hidden: true + type: language + translatedText: + label: "Translated version of the body text" + hidden: true + type: text + date: + label: "Date" + description: "If not otherwise specified" + type: date + authoredAt: + label: "Authored on" + type: date + matchable: false + publishedAt: + label: "Published on" + type: date + matchable: false + parent: + label: "Folder" + type: entity + range: Folder + reverse: + name: children + label: "Child documents" + hidden: true + ancestors: + label: "Ancestors" + type: entity + hidden: true + range: Folder + reverse: + name: descendants + hidden: true + label: "Descendants" + processingStatus: + label: "Processing status" + hidden: true + processingError: + label: "Processing error" + hidden: true + processingAgent: + label: "Processing agent" + description: "Name and version of the processing agent used to process the Document" + type: string + processedAt: + label: "Processed at" + description: "Date and time of the most recent ingestion of the Document" + type: date + matchable: false + hidden: true diff --git a/schemas/4.6.0/Documentation.yaml b/schemas/4.6.0/Documentation.yaml new file mode 100644 index 0000000..63e669a --- /dev/null +++ b/schemas/4.6.0/Documentation.yaml @@ -0,0 +1,38 @@ +Documentation: + label: "Documentation" + plural: "Documentations" + description: > + Links some entity to a document, which might provide further detail or + evidence regarding the entity. + extends: + - Interest + matchable: false + featured: + - document + - entity + - role + required: + - document + - entity + edge: + source: document + label: "documents" + target: entity + directed: false + caption: + - role + properties: + document: + label: "Document" + reverse: + name: relatedEntities + label: "Related entities" + type: entity + range: Document + entity: + label: "Entity" + reverse: + name: documentedBy + label: "Documents" + type: entity + range: Thing diff --git a/schemas/4.6.0/EconomicActivity.yaml b/schemas/4.6.0/EconomicActivity.yaml new file mode 100644 index 0000000..05c8e5c --- /dev/null +++ b/schemas/4.6.0/EconomicActivity.yaml @@ -0,0 +1,137 @@ +EconomicActivity: + label: "Customs declaration" + plural: "Customs declarations" + description: "A foreign economic activity." + matchable: false + extends: + - Interval + featured: + - sender + - receiver + - contract + - goodsDescription + - startDate + - endDate + caption: + - summary + - goodsDescription + - ccdNumber + properties: + contract: + label: "Contract" + reverse: + name: economicActivityContract + label: "Used in customs" + type: entity + range: Contract + ccdNumber: + label: "Customs Cargo Declaration Number" + type: identifier + ccdValue: + label: "CCD Value" + description: "Declaration Value" + directionOfTransportation: + label: "Direction of transportation" + description: "Direction of transportation (import/export)" + customsProcedure: + label: "Customs Procedure" + description: "Customs Procedure — type of customs clearance" + vedCode: + label: "FEAC Code" + description: "(Код ТН ВЭД) Foreign Economic Activity Commodity Code" + type: identifier + vedCodeDescription: + label: "FEAC Code description" + description: "(Описание кода ТН ВЭД) Foreign Economic Activity Commodity Code description" + goodsDescription: + label: "Description of goods" + type: text + declarant: + label: "Declarant" + description: "Customs declarant" + type: entity + range: LegalEntity + reverse: + name: economicActivityDeclarant + label: "Customs declarations" + sender: + label: "Sender" + description: "Origin of the goods" + type: entity + range: LegalEntity + reverse: + name: economicActivitySender + label: "Goods originated" + receiver: + label: "Receiver" + description: "Destination of the goods" + type: entity + range: LegalEntity + reverse: + name: economicActivityReceiver + label: "Goods received" + contractHolder: + label: "Contract holder" + description: "Customs formalities caretaker" + type: entity + range: LegalEntity + reverse: + name: economicActivityHolder + label: "Customs declarations facilitated" + invoiceAmount: + label: "Invoice Value Amount" + description: "Invoice Value of goods" + customsAmount: + label: "Customs Value Amount" + description: "Customs Value of goods" + dollarExchRate: + label: "USD Exchange Rate" + description: "USD Exchange Rate for the activity" + tradingCountry: + label: "Trading Country" + description: "Trading Country of the company which transports the goods via Russian border" + type: country + departureCountry: + label: "Country of departure" + description: "Country out of which the goods are transported" + type: country + destinationCountry: + label: "Country of destination" + description: "Final destination for the goods" + type: country + originCountry: + label: "Country of origin" + description: "Country of origin of goods" + type: country + bankAccount: + label: "Bank Account" + description: "Bank account of the contract" + type: entity + range: BankAccount + reverse: + name: contractBankAccount + label: "Customs declarations" + bankRub: + label: "Rouble bank" + description: "Bank account for payments in roubles" + type: entity + range: BankAccount + reverse: + name: rubBankAccount + label: "Customs declarations (as rouble bank)" + bankForeign: + label: "Foreign currency bank" + description: "Bank account for payments in foreign currency" + type: entity + range: BankAccount + reverse: + name: foreignBankAccount + label: "Customs declarations (as foreign bank)" + transport: + label: "Transport" + description: "Means of transportation" + type: entity + range: Vehicle + reverse: + name: declaredCustoms + label: "Customs declarations" diff --git a/schemas/4.6.0/Email.yaml b/schemas/4.6.0/Email.yaml new file mode 100644 index 0000000..d47f398 --- /dev/null +++ b/schemas/4.6.0/Email.yaml @@ -0,0 +1,76 @@ +Email: + extends: + - Folder + - PlainText + - HyperText + label: E-Mail + plural: E-Mails + description: + An internet mail message. The body can be formatted as plain text and/or HTML, + and the message may have any number of attachments. + matchable: false + generated: true + featured: + - subject + - date + - from + caption: + - subject + - threadTopic + - title + - name + - fileName + properties: + subject: + label: Subject + type: string + caption: true + threadTopic: + label: Thread topic + type: string + sender: + label: "Sender" + type: string + from: + label: "From" + type: string + to: + label: "To" + type: string + cc: + label: "CC" + description: "Carbon copy" + type: string + bcc: + label: "BCC" + description: "Blind carbon copy" + type: string + emitters: + label: "Emitter" + type: entity + range: LegalEntity + reverse: + name: emailsSent + label: "E-Mails sent" + recipients: + label: "Recipients" + type: entity + range: LegalEntity + reverse: + name: emailsReceived + label: "E-Mails received" + inReplyTo: + label: "In Reply To" + description: "Message ID of the preceding email in the thread" + hidden: true + inReplyToEmail: + label: Responding to + type: entity + range: Email + reverse: + name: responses + label: "Responses" + headers: + label: "Raw headers" + hidden: true + type: json diff --git a/schemas/4.6.0/Employment.yaml b/schemas/4.6.0/Employment.yaml new file mode 100644 index 0000000..b2948cb --- /dev/null +++ b/schemas/4.6.0/Employment.yaml @@ -0,0 +1,39 @@ +Employment: + label: "Employment" + plural: "Employments" + extends: + - Interest + matchable: false + featured: + - employer + - employee + - role + - startDate + - endDate + required: + - employer + - employee + caption: + - role + edge: + source: employee + label: "works for" + target: employer + directed: true + caption: + - role + properties: + employer: + label: "Employer" + type: entity + range: Organization + reverse: + name: employees + label: "Employees" + employee: + label: "Employee" + type: entity + range: Person + reverse: + name: employers + label: "Employers" diff --git a/schemas/4.6.0/Event.yaml b/schemas/4.6.0/Event.yaml new file mode 100644 index 0000000..7ebde6e --- /dev/null +++ b/schemas/4.6.0/Event.yaml @@ -0,0 +1,40 @@ +Event: + label: "Event" + plural: "Events" + extends: + - Interval + - Analyzable + - Thing + matchable: false + # generated: true + caption: + - name + - summary + - date + required: + - name + featured: + - name + - summary + - date + - location + properties: + location: + label: "Location" + type: address + important: + label: "Important" + organizer: + label: "Organizer" + type: entity + range: LegalEntity + reverse: + name: eventsOrganized + label: "Organized events" + involved: + label: "Involved" + type: entity + range: LegalEntity + reverse: + name: eventsInvolved + label: "Events" diff --git a/schemas/4.6.0/Family.yaml b/schemas/4.6.0/Family.yaml new file mode 100644 index 0000000..00ace99 --- /dev/null +++ b/schemas/4.6.0/Family.yaml @@ -0,0 +1,44 @@ +Family: + label: "Family" + plural: "Family members" + description: "Family relationship between two people." + extends: + - Interval + matchable: false + featured: + - person + - relative + - relationship + required: + - person + - relative + edge: + source: person + label: "related to" + target: relative + directed: false + caption: + - relationship + properties: + person: + label: "Person" + description: "The subject of the familial relation" + type: entity + range: Person + reverse: + name: familyPerson + label: "Family members" + relative: + label: "Relative" + type: entity + range: Person + reverse: + name: familyRelative + label: "Relatives" + description: "The relative of the subject person" + relationship: + label: "Relationship" + description: "Nature of the relationship from the `person`'s perspective, e.g. 'mother', where `relative` is the mother of `person`" + examples: + - mother + - sibling diff --git a/schemas/4.6.0/Folder.yaml b/schemas/4.6.0/Folder.yaml new file mode 100644 index 0000000..7ad8958 --- /dev/null +++ b/schemas/4.6.0/Folder.yaml @@ -0,0 +1,13 @@ +Folder: + extends: + - Document + label: Folder + plural: Folders + matchable: false + generated: true + featured: + - title + - parent + caption: + - fileName + - title diff --git a/schemas/4.6.0/HyperText.yaml b/schemas/4.6.0/HyperText.yaml new file mode 100644 index 0000000..db2ba4c --- /dev/null +++ b/schemas/4.6.0/HyperText.yaml @@ -0,0 +1,21 @@ +HyperText: + # HTML document + extends: + - Document + label: Web page + plural: Web pages + matchable: false + generated: true + featured: + - title + - fileName + - mimeType + - parent + caption: + - title + - fileName + properties: + bodyHtml: + label: "HTML" + type: html + hidden: true diff --git a/schemas/4.6.0/Identification.yaml b/schemas/4.6.0/Identification.yaml new file mode 100644 index 0000000..c075cc0 --- /dev/null +++ b/schemas/4.6.0/Identification.yaml @@ -0,0 +1,44 @@ +Identification: + label: "Identification" + plural: "Identifications" + description: > + A form of identification associated with its holder and some issuing country. This + can be used for national ID cards, voter enrollments, and similar instruments. + extends: + - Interval + matchable: false + featured: + - number + - country + - type + - holder + - startDate + - endDate + required: + - holder + - number + caption: + - number + properties: + holder: + label: "Identification holder" + type: entity + range: LegalEntity + reverse: + label: "Identifications" + name: identification + type: + label: "Type" + examples: + - Passport + - Driving license + country: + label: "Country" + type: country + number: + label: "Document number" + type: identifier + maxLength: 64 + authority: + label: "Authority" + description: "Government body issuing the identification document" diff --git a/schemas/4.6.0/Image.yaml b/schemas/4.6.0/Image.yaml new file mode 100644 index 0000000..87b1c84 --- /dev/null +++ b/schemas/4.6.0/Image.yaml @@ -0,0 +1,32 @@ +Image: + # This schema defines an image file entity within the FollowTheMoney data model. + # If a `checksum` property is present, consider loading it from an Aleph archive + # or FtM data lake. Otherwise, use `sourceUrl` to fetch the image directly. + extends: + - Document + label: Image + plural: Images + description: > + An image file. + matchable: false + generated: true + featured: + - title + - fileName + - mimeType + - parent + caption: + - fileName + - title + properties: + pictured: + label: "Pictured" + reverse: + name: images + label: "Images" + type: entity + range: Person + credit: + label: "Credit" + description: "The credit or attribution for the image" + type: string diff --git a/schemas/4.6.0/Interest.yaml b/schemas/4.6.0/Interest.yaml new file mode 100644 index 0000000..09ad529 --- /dev/null +++ b/schemas/4.6.0/Interest.yaml @@ -0,0 +1,15 @@ +Interest: + label: "Interest" + extends: + - Interval + matchable: false + abstract: true + properties: + role: + label: "Role" + status: + label: "Status" + # level: + # label: "Level of interest" # direct/indirect + # votes: + # label: "Number of votes" diff --git a/schemas/4.6.0/Interval.yaml b/schemas/4.6.0/Interval.yaml new file mode 100644 index 0000000..9a6e240 --- /dev/null +++ b/schemas/4.6.0/Interval.yaml @@ -0,0 +1,88 @@ +Interval: + # FOR THE LOVE OF ALL THAT IS GOOD AND BEAUTIFUL IN THIS UNVERSE: + # + # Intervals are not graph edges. + # + # Yes, many interval child schemata (e.g. Directorship, Ownership) can + # be interpreted as an edge between two Things. But that isn't intrinsic. + # If you write any code that assumes that Intervals == edges, it will + # be buggy and wrong. You will find there are intervals that link to + # only one thing (e.g. Sanction) or to much more than two (e.g. FEA). + # Just do not do it. + label: "Interval" + description: > + An object which is bounded in time. + matchable: false + abstract: true + temporalExtent: + start: + - startDate + - date + end: + - endDate + properties: + startDate: + label: "Start date" + description: "The date of issue of a document, or on which a relationship, sanctioned status, occupation, etc. started" + type: date + endDate: + label: "End date" + description: "The date of expiry of a document, or on which a relationship, sanctioned status, occupation, etc. ended" + type: date + date: + label: "Date" + description: "Date associated with an Interval that isn't explicitly its `startDate` or `endDate` (prefer those when available)" + type: date + summary: + label: "Summary" + type: text + description: + label: Description + type: text + recordId: + label: "Record ID" + description: Identifier of a record upon which this link is based + sourceUrl: + label: "Source link" + description: "A deep link to a source website for the profile" + type: url + matchable: false + proof: + label: Source document + reverse: + name: provenIntervals + label: "Derived relationships" + type: entity + range: Document + publisher: + label: "Publishing source" + publisherUrl: + label: "Publishing source URL" + type: url + matchable: false + alephUrl: + label: Aleph URL + type: url + hidden: true + matchable: false + namesMentioned: + label: "Detected names" + hidden: true + type: name + indexText: + # This is a leaked abstraction from aleph. The idea is to have some + # additional text field that can be used to associate searchable text + # with an entity. This will be removed as a property upon indexing so + # that it can never be retrieved. + label: Index text + hidden: true + type: text + modifiedAt: + label: "Modified on" + description: "The date on which the entity (like the ID document) was modified, not to be confused with an internal 'last updated'-style metadata field" + type: date + retrievedAt: + label: "Retrieved on" + description: "Retrieval date generated by a data gathering system, not to be confused with an internal 'first found'-style metadata field" + type: date + matchable: false diff --git a/schemas/4.6.0/LegalEntity.yaml b/schemas/4.6.0/LegalEntity.yaml new file mode 100644 index 0000000..2c16673 --- /dev/null +++ b/schemas/4.6.0/LegalEntity.yaml @@ -0,0 +1,214 @@ +LegalEntity: + extends: + - Thing + label: Legal entity + plural: Legal entities + description: > + Any party to legal proceedings, such as asset ownership, corporate governance + or social interactions. Often used when raw data does not specify if something + is a person, organization or company. + matchable: true + featured: + - name + - country + - legalForm + - status + required: + - name + caption: + - name + - alias + - abbreviation + - weakAlias + - previousName + - email + - phone + - registrationNumber + temporalExtent: + start: + - incorporationDate + end: + - dissolutionDate + properties: + abbreviation: + label: Abbreviation + type: name + description: "Abbreviated name or acronym" + # TODO: is un-matchable wise? The idea is to handle it like `weakAlias` rather than `alias`. + matchable: false + email: + label: Email + type: email + description: "Email address" + phone: + label: Phone + type: phone + description: "Phone number" + maxLength: 32 + website: + label: Website + type: url + description: "Website address" + legalForm: + label: Legal form + description: "Company or organization type" + examples: + - Joint Stock Company + matchable: false + incorporationDate: + label: Incorporation date + type: date + description: "The date the legal entity was incorporated" + dissolutionDate: + label: Dissolution date + type: date + description: "The date the legal entity was dissolved, if applicable" + taxStatus: + label: Tax status + examples: + - Non-Habitual Resident + - Compliant as at March 2022 + matchable: false + status: + label: Status + description: "A short string describing how 'active' (broadly defined) an entity is" + examples: + - Current / Former / Sitting / Retired + - Active / Inactive + - Dissolved (last known activity October 2024) + - Liquidated on 12 November 2022 + matchable: false + sector: + label: Sector + description: "Industrial or trade sector as provided by the data source" + examples: + - Registered Nurse + - Retail and wholesale + - Sea and coastal freight water transport + matchable: false + classification: + # OS note: We use this with PEPs to summarize their exposure. + label: Classification + description: "Classification as provided by the data source or inferred based on other provided data; prefer `sector` if relevant" + examples: + - Local government (current) + - Banking operations license + - 4. Priority Sector Apparel + - Entities Directly Serving the Defense and Security Sectors + matchable: false + registrationNumber: + label: Registration number + type: identifier + description: "Company registration number" + idNumber: + label: ID Number + type: identifier + description: "ID of any applicable personal identification document. Used mainly for people and their national ID cards." + taxNumber: + label: Tax Number + type: identifier + description: "Tax identification number" + licenseNumber: + label: License Number + type: identifier + description: "For licenses granted to an entity" + vatCode: + label: "V.A.T. Identifier" + description: "(EU) VAT number" + type: identifier + maxLength: 32 + jurisdiction: + label: Jurisdiction + type: country + description: "Country or region in which this entity operates; prefer over broader `country` when relevant" + mainCountry: + label: Country of origin + type: country + description: "Primary country of this entity; prefer over broader `country` when relevant" + opencorporatesUrl: + label: OpenCorporates URL + type: url + bvdId: + label: Bureau van Dijk ID + type: identifier + sayariId: + label: Sayari Entity ID + type: identifier + brightQueryId: + label: BrightQuery ID + type: identifier + brightQueryOrgId: + label: BrightQuery Organization ID + type: identifier + hidden: true + matchable: false + uscCode: + # cf. https://en.wikipedia.org/wiki/Unified_Social_Credit_Identifier + label: "USCC" + description: "Chinese Unified Social Credit Identifier" + type: identifier + format: uscc + icijId: + label: ICIJ ID + description: "ID according to International Consortium for Investigative Journalists" + okpoCode: + label: "OKPO" + description: "Russian industry classifier" + type: identifier + matchable: false + innCode: + label: "INN" + description: "(RU, ИНН) Russian tax identification number. Issued to businesses and individuals in Russia." + type: identifier + format: inn + maxLength: 32 + ogrnCode: + label: "OGRN" + description: "(RU, ОГРН) Registration number used in Russia's Unified State Register of Legal Entities (EGRUL)" + type: identifier + format: ogrn + maxLength: 32 + leiCode: + # cf. https://www.gleif.org/en/about-lei/introducing-the-legal-entity-identifier-lei + label: "LEI" + description: "Legal Entity Identifier" + type: identifier + format: lei + maxLength: 32 + dunsCode: + label: "DUNS" + description: "Data Universal Numbering System - Dun & Bradstreet identifier" + type: identifier + maxLength: 16 + uniqueEntityId: + label: "Unique Entity ID" + description: "UEI from SAM.gov" + # This is a scheme the US federal government (peace be upon its remains) introduced to replace + # DUNS numbers, which had previously been used as an ID in procurement. DUNS was basically killing + # them with license fees. + type: identifier + format: uei + maxLength: 32 + npiCode: + label: "NPI" + description: "National Provider Identifier, issued to health care providers in the United States" + type: identifier + format: npi + maxLength: 16 + swiftBic: + label: "SWIFT/BIC" + description: "SWIFT Bank identifier code from ISO9362" + # OS note: BIC exist as bank codes (8 characters) and branch codes (11 characters). OpenSanctions + # currently cuts everything down to 8, meaning that all branches will match the same bank. + type: identifier + format: bic + maxLength: 16 + parent: + deprecated: true + label: "Parent company" + description: "Deprecated, use `Ownership` link instead" + reverse: + label: "Subsidiaries" + name: subsidiaries + type: entity + range: LegalEntity diff --git a/schemas/4.6.0/License.yaml b/schemas/4.6.0/License.yaml new file mode 100644 index 0000000..7d48123 --- /dev/null +++ b/schemas/4.6.0/License.yaml @@ -0,0 +1,27 @@ +License: + label: License + plural: Licenses + description: "A grant of land, rights or property. A type of `Contract`." + extends: + - Contract + matchable: false + featured: + - name + - amount + - authority + - contractDate + - commodities + required: + - name + - authority + caption: + - name + properties: + area: + label: "Area" + type: number + description: "Spatial area of the license or concession" + commodities: + label: "Commodities" + reviewDate: + label: "License review date" diff --git a/schemas/4.6.0/Membership.yaml b/schemas/4.6.0/Membership.yaml new file mode 100644 index 0000000..6d91abf --- /dev/null +++ b/schemas/4.6.0/Membership.yaml @@ -0,0 +1,39 @@ +Membership: + label: "Membership" + plural: "Memberships" + extends: + - Interest + matchable: false + featured: + - member + - organization + - role + - startDate + - endDate + required: + - member + - organization + caption: + - role + edge: + source: member + label: "belongs to" + target: organization + directed: true + caption: + - role + properties: + member: + label: "Member" + type: entity + range: LegalEntity + reverse: + name: membershipMember + label: "Memberships" + organization: + label: "Organization" + type: entity + range: Organization + reverse: + name: membershipOrganization + label: "Members" diff --git a/schemas/4.6.0/Mention.yaml b/schemas/4.6.0/Mention.yaml new file mode 100644 index 0000000..2e60e5b --- /dev/null +++ b/schemas/4.6.0/Mention.yaml @@ -0,0 +1,54 @@ +Mention: + label: Mention + plural: Mentions + abstract: false + matchable: false + generated: true + hidden: true + featured: + - document + - name + - resolved + required: + - document + - name + caption: + - name + properties: + document: + label: "Document" + reverse: + name: mentionedEntities + label: "Extracted names" + hidden: true + type: entity + range: Document + resolved: + label: "Entity" + reverse: + name: mentionedBy + label: "Document mentions" + type: entity + range: LegalEntity + name: + label: "Name" + type: name + detectedSchema: + label: "Detected entity type" + hidden: true + matchable: false + contextCountry: + label: "Co-occurring countries" + hidden: true + type: country + matchable: false + contextPhone: + label: "Co-occurring phone numbers" + hidden: true + type: phone + matchable: false + contextEmail: + label: "Co-occurring e-mail addresses" + hidden: true + type: email + matchable: false diff --git a/schemas/4.6.0/Message.yaml b/schemas/4.6.0/Message.yaml new file mode 100644 index 0000000..7e6274a --- /dev/null +++ b/schemas/4.6.0/Message.yaml @@ -0,0 +1,78 @@ +Message: + extends: + - Interval + - Folder + - PlainText + - HyperText + label: Message + plural: Messages + matchable: false + generated: true + featured: + - subject + - date + - sender + - recipients + required: + - bodyText + - sender + caption: + - subject + - title + - threadTopic + - fileName + temporalExtent: + start: + - date + - authoredAt + - publishedAt + properties: + subject: + label: Subject + type: string + threadTopic: + label: Thread topic + type: string + sender: + label: "Sender" + type: entity + range: LegalEntity + reverse: + name: messagesSent + label: "Messages sent" + senderAccount: + label: "Sender Account" + type: entity + range: UserAccount + reverse: + name: messagesSent + label: "Messages sent" + recipients: + label: "Recipients" + type: entity + range: LegalEntity + reverse: + name: messagesReceived + label: "Messages received" + recipientAccount: + label: "Recipient Account" + type: entity + range: UserAccount + reverse: + name: messagesReceived + label: "Messages received" + inReplyTo: + label: "In Reply To" + description: "Message ID of the preceding message in the thread" + hidden: true + inReplyToMessage: + label: Responding to + type: entity + range: Message + reverse: + name: responses + label: "Responses" + metadata: + label: "Metadata" + hidden: true + type: json diff --git a/schemas/4.6.0/Note.yaml b/schemas/4.6.0/Note.yaml new file mode 100644 index 0000000..986a42f --- /dev/null +++ b/schemas/4.6.0/Note.yaml @@ -0,0 +1,23 @@ +Note: + extends: + - Thing + - Analyzable + label: Note + plural: Notes + description: > + An annotation that applies to a document or entity. + matchable: false + # generated: true + featured: + - description + - entity + caption: + - description + properties: + entity: + label: "Entity" + type: entity + range: Thing + reverse: + name: noteEntities + label: "Notes" diff --git a/schemas/4.6.0/Occupancy.yaml b/schemas/4.6.0/Occupancy.yaml new file mode 100644 index 0000000..ca4c59b --- /dev/null +++ b/schemas/4.6.0/Occupancy.yaml @@ -0,0 +1,62 @@ +Occupancy: + label: "Occupancy" + plural: "Occupancies" + extends: + - Interval + matchable: false + description: > + The occupation of a position by a person for a specific period of time. + featured: + - holder + - post + required: + - holder + - post + edge: + source: holder + label: holds + target: post + directed: true + caption: + - startDate + - endDate + temporalExtent: + start: + - startDate + - declarationDate + - date + end: + - endDate + properties: + holder: + label: "Holder" + reverse: + name: positionOccupancies + label: "Positions held" + type: entity + range: Person + post: + label: "Position occupied" + reverse: + name: occupancies + label: "Position holders" + type: entity + range: Position + declarationDate: + label: "Declaration date" + description: "If established by an asset declaration" + type: date + matchable: false + constituency: + # https://www.popoloproject.com/specs/membership.html#classes-and-properties + label: "Constituency" + description: "The geographic area/distict represented by the holder" + politicalGroup: + label: "Political group" + description: "Caucus, faction or parliamentary group of the holder" + status: + label: "Status" + examples: + - current + - ended + type: string diff --git a/schemas/4.6.0/Organization.yaml b/schemas/4.6.0/Organization.yaml new file mode 100644 index 0000000..91821cd --- /dev/null +++ b/schemas/4.6.0/Organization.yaml @@ -0,0 +1,46 @@ +Organization: + extends: + - LegalEntity + label: Organization + plural: Organizations + description: > + Any type of incorporated entity that cannot be owned by another (see `Company`). This + might include charities, foundations or state-owned enterprises, depending on their + jurisdiction. + matchable: true + featured: + - name + - country + - legalForm + - status + required: + - name + caption: + - name + - alias + - abbreviation + - weakAlias + - previousName + - registrationNumber + properties: + cageCode: + label: CAGE + description: Commercial and Government Entity Code (CAGE) + type: identifier + maxLength: 16 + permId: + label: PermID + description: LSEG/Refinitiv code for a company + type: identifier + maxLength: 16 + imoNumber: + label: IMO Number + type: identifier + format: imo + maxLength: 16 + giiNumber: + # cf. https://www.irs.gov/businesses/corporations/fatca-registration-and-ffi-list-giin-composition-information + label: GIIN + description: Global Intermediary Identification Number + type: identifier + maxLength: 20 diff --git a/schemas/4.6.0/Ownership.yaml b/schemas/4.6.0/Ownership.yaml new file mode 100644 index 0000000..cb0effb --- /dev/null +++ b/schemas/4.6.0/Ownership.yaml @@ -0,0 +1,56 @@ +Ownership: + label: "Ownership" + plural: "Ownerships" + extends: + - Interest + matchable: false + featured: + - owner + - asset + - percentage + - startDate + - endDate + required: + - owner + - asset + edge: # OWNER owns ASSET + source: owner + label: "owns" + target: asset + directed: true + caption: + - percentage + properties: + owner: + label: "Owner" + reverse: + name: ownershipOwner + label: "Assets and shares" + type: entity + range: LegalEntity + asset: + label: "Asset" + reverse: + name: ownershipAsset + label: "Owners" + type: entity + range: Asset + percentage: + label: "Percentage held" + sharesCount: + label: "Number of shares" + sharesValue: + label: "Value of shares" + sharesCurrency: + label: "Currency of shares" + sharesType: + label: "Type of shares" + legalBasis: + label: "Legal basis" + ownershipType: + label: "Type of ownership" + examples: + - beneficial + - direct + - indirect + - ultimate diff --git a/schemas/4.6.0/Package.yaml b/schemas/4.6.0/Package.yaml new file mode 100644 index 0000000..b6a6fb4 --- /dev/null +++ b/schemas/4.6.0/Package.yaml @@ -0,0 +1,17 @@ +Package: + extends: + - Folder + label: Package + plural: Packages + description: > + A bundle of files that have been packaged together into some form of archive. + matchable: false + generated: true + featured: + - title + - fileName + - mimeType + - parent + caption: + - fileName + - title diff --git a/schemas/4.6.0/Page.yaml b/schemas/4.6.0/Page.yaml new file mode 100644 index 0000000..bda3ca8 --- /dev/null +++ b/schemas/4.6.0/Page.yaml @@ -0,0 +1,42 @@ +Page: + # Be careful: Not derived from anything! + label: Page + plural: Pages + matchable: false + generated: true + hidden: true + properties: + index: + label: "Index" + type: number + bodyText: + label: "Text" + hidden: true + type: text + document: + label: "Document" + type: entity + range: Pages + reverse: + name: pages + label: "Pages" + hidden: true + detectedLanguage: + label: "Detected language" + type: language + hidden: true + translatedText: + label: "Translated version of the body text" + hidden: true + type: text + translatedTextLanguage: + label: "The language of the translated text" + hidden: true + indexText: + # This is a leaked abstraction from aleph. The idea is to have some + # additional text field that can be used to associate searchable text + # with an entity. This will be removed as a property upon indexing so + # that it can never be retrieved. + label: Index text + hidden: true + type: text diff --git a/schemas/4.6.0/Pages.yaml b/schemas/4.6.0/Pages.yaml new file mode 100644 index 0000000..a161ae9 --- /dev/null +++ b/schemas/4.6.0/Pages.yaml @@ -0,0 +1,23 @@ +Pages: + extends: + - Document + label: Document + description: > + A multi-page document, such as a PDF or Word file or slide-show presentation. + plural: Documents + matchable: false + generated: true + featured: + - title + - fileName + - mimeType + - parent + caption: + - fileName + - title + properties: + pdfHash: + label: "PDF alternative version checksum" + hidden: true + type: checksum + matchable: false diff --git a/schemas/4.6.0/Passport.yaml b/schemas/4.6.0/Passport.yaml new file mode 100644 index 0000000..526b74b --- /dev/null +++ b/schemas/4.6.0/Passport.yaml @@ -0,0 +1,47 @@ +Passport: + label: "Passport" + plural: "Passports" + description: > + A passport held by a person. + extends: + - Identification + matchable: false + featured: + - number + - country + - type + - holder + - startDate + - endDate + required: + - holder + - number + caption: + - passportNumber + - number + properties: + passportNumber: + label: "Passport number" + description: "Deprecated, use `Identification:number` instead" + deprecated: true + type: identifier + hidden: true + surname: + label: "Surname" + description: "Deprecated, use `Identification:holder` link's `lastName` instead" + deprecated: true + givenName: + label: "Given name" + description: "Deprecated, use `Identification:holder` link's `firstName` / `middleName` instead" + deprecated: true + birthDate: + label: "Birth date" + type: date + birthPlace: + label: "Place of birth" + gender: + label: "Gender" + type: gender + personalNumber: + label: "Personal number" + type: identifier diff --git a/schemas/4.6.0/Payment.yaml b/schemas/4.6.0/Payment.yaml new file mode 100644 index 0000000..3b3fbfc --- /dev/null +++ b/schemas/4.6.0/Payment.yaml @@ -0,0 +1,81 @@ +Payment: + label: "Payment" + plural: "Payments" + description: "A monetary payment between two parties." + matchable: false + extends: + - Interval + - Value + featured: + - payer + - beneficiary + - date + - amount + - purpose + required: + - payer + - beneficiary + caption: + - amount + edge: + source: payer + label: "paid" + target: beneficiary + directed: true + caption: + - amount + - date + - purpose + properties: + sequenceNumber: + label: "Sequence number" + transactionNumber: + label: "Transaction number" + purpose: + label: "Payment purpose" + type: text + programme: + label: "Payment programme" + description: "Programme name, funding code, category identifier, etc." + payer: + label: "Payer" + reverse: + name: paymentPayer + label: "Payments made" + type: entity + range: LegalEntity + payerAccount: + label: "Payer bank account" + reverse: + name: paymentPayerAccount + label: "Payments made" + type: entity + range: BankAccount + beneficiary: + label: "Beneficiary" + reverse: + name: paymentBeneficiary + label: "Payments received" + type: entity + range: LegalEntity + beneficiaryAccount: + label: "Beneficiary bank account" + reverse: + name: paymentBeneficiaryAccount + label: "Payments received" + type: entity + range: BankAccount + contract: + label: "Contract" + reverse: + name: paymentContract + label: "Contractual payments" + type: entity + range: Contract + project: + label: "Project" + reverse: + name: payments + label: "Payments" + type: entity + range: Project diff --git a/schemas/4.6.0/Person.yaml b/schemas/4.6.0/Person.yaml new file mode 100644 index 0000000..e775e7e --- /dev/null +++ b/schemas/4.6.0/Person.yaml @@ -0,0 +1,120 @@ +Person: + extends: + - LegalEntity + label: Person + plural: People + description: > + A natural person, as opposed to a corporation of some type. + matchable: true + featured: + - name + - nationality + - birthDate + required: + - name + caption: + - name + - alias + - previousName + - weakAlias + - abbreviation + - lastName + - email + - phone + temporalExtent: + start: + - birthDate + end: + - deathDate + properties: + title: + label: Title + # The `firstName`, `lastName`, `secondName` etc. properties intentionally do not use + # the `name` property type. Many FtM tools (including Aleph) use name properties to + # compare/match entities, but matching entites just on e.g. a first name would lead to + # too many false positives. + firstName: + label: First name + description: "The part of a name that indicates the person, also often called given name or forename" + secondName: + label: Second name + description: "Deprecated, use one of the other more specific name properties instead" + deprecated: true + middleName: + label: Middle name + description: "The part of name written between a person's given name and family name. Often abbreviated as a middle initial." + fatherName: + label: Patronymic + description: "The part of a name based on the given name of one's father" + motherName: + label: Matronymic + description: "The part of a name based on the given name of one's mother" + lastName: + label: Last name + description: "The part of a name that indicates one's family, also often called surname or family name" + nameSuffix: + label: Name suffix + examples: + - OBE + birthDate: + label: Birth date + type: date + birthPlace: + label: Place of birth + birthCountry: + label: Country of birth + # nb. Sometimes a territory which is historical, eg. Soviet Union, Yugoslavia, Zaire. + type: country + deathDate: + label: Death date + description: Joined the choir invisible. + type: date + position: + label: Position + matchable: false + # OS note: the distinction between nationality and citizenship is pretty fine, the two props + # exist mainly so that we can preserve the distinction if it exists in source data. + # Nationality is a broader concept of being "of a country", citizenship narrower (as in holding + # the passport and/or right to vote). + nationality: + label: Nationality + type: country + citizenship: + label: Citizenship + type: country + passportNumber: + label: Passport number + type: identifier + # Awkward data section below + socialSecurityNumber: + label: Social security number + type: identifier + format: ssn + gender: + label: Gender + type: gender + ethnicity: + label: Ethnicity + height: + label: Height + type: number + weight: + label: Weight + type: number + eyeColor: + label: Eye color + hairColor: + label: Hair color + appearance: + label: Physical appearance + religion: + label: Religion + political: + label: Political association + profession: + label: Profession + education: + label: Education + spokenLanguage: + label: Spoken language + type: language diff --git a/schemas/4.6.0/PlainText.yaml b/schemas/4.6.0/PlainText.yaml new file mode 100644 index 0000000..7899061 --- /dev/null +++ b/schemas/4.6.0/PlainText.yaml @@ -0,0 +1,17 @@ +PlainText: + extends: + - Document + label: Text file + plural: Text files + description: > + Text files, like .txt or source code. + matchable: false + generated: true + featured: + - title + - fileName + - mimeType + - parent + caption: + - fileName + - title diff --git a/schemas/4.6.0/Position.yaml b/schemas/4.6.0/Position.yaml new file mode 100644 index 0000000..de59701 --- /dev/null +++ b/schemas/4.6.0/Position.yaml @@ -0,0 +1,46 @@ +Position: + label: "Position" + plural: "Positions" + extends: + - Thing + matchable: true + # cf. https://www.popoloproject.com/specs/post.html + description: > + A post, role or position within an organization or body. + This describes a position one or more people may occupy + and not the occupation of the post by a specific individual at a + specific point in time (see `Occupancy`). + featured: + - name + - country + - subnationalArea + caption: + - name + required: + - name + temporalExtent: + start: + - inceptionDate + end: + - dissolutionDate + properties: + organization: + label: "Organization" + type: entity + reverse: + name: positions + label: Positions + range: Organization + inceptionDate: + label: Inception date + type: date + dissolutionDate: + label: Dissolution date + type: date + subnationalArea: + label: Subnational area + description: "The name or code of a subnational jurisdiction, only when the position is geographically limited. Prefer `Occupancy:constituency` where relevant." + type: string + numberOfSeats: + label: Total number of seats + type: number diff --git a/schemas/4.6.0/Project.yaml b/schemas/4.6.0/Project.yaml new file mode 100644 index 0000000..50180e7 --- /dev/null +++ b/schemas/4.6.0/Project.yaml @@ -0,0 +1,27 @@ +Project: + label: Project + plural: Projects + extends: + - Interval + - Thing + - Value + description: > + An activity carried out by a group of `participants`. + matchable: false + featured: + - name + - projectId + - startDate + caption: + - name + - projectId + properties: + projectId: + label: "Project ID" + type: identifier + status: + label: "Status" + phase: + label: "Phase" + goal: + label: "Project goal" diff --git a/schemas/4.6.0/ProjectParticipant.yaml b/schemas/4.6.0/ProjectParticipant.yaml new file mode 100644 index 0000000..5160b53 --- /dev/null +++ b/schemas/4.6.0/ProjectParticipant.yaml @@ -0,0 +1,36 @@ +ProjectParticipant: + label: Project participant + plural: Project participants + extends: + - Interest + description: > + A participant in a `Project`. + matchable: false + featured: + - project + - participant + - role + caption: + - role + edge: + source: participant + label: "participates in" + target: project + directed: true + caption: + - role + properties: + project: + label: "Project" + type: entity + range: Project + reverse: + name: participants + label: "Participants" + participant: + label: "Participant" + type: entity + range: LegalEntity + reverse: + name: projectParticipation + label: "Projects" diff --git a/schemas/4.6.0/PublicBody.yaml b/schemas/4.6.0/PublicBody.yaml new file mode 100644 index 0000000..b7d4c41 --- /dev/null +++ b/schemas/4.6.0/PublicBody.yaml @@ -0,0 +1,21 @@ +PublicBody: + label: Public body + plural: Public bodies + description: > + A public body, such as a ministry, department or state company. + extends: + - Organization + matchable: true + featured: + - name + - country + - legalForm + - status + caption: + - name + - alias + - abbreviation + - weakAlias + - previousName + required: + - name diff --git a/schemas/4.6.0/RealEstate.yaml b/schemas/4.6.0/RealEstate.yaml new file mode 100644 index 0000000..a40c778 --- /dev/null +++ b/schemas/4.6.0/RealEstate.yaml @@ -0,0 +1,59 @@ +RealEstate: + extends: + - Asset + label: Real estate + plural: Real estates + description: "A piece of land or property." + matchable: false + featured: + - registrationNumber + - address + - country + caption: + - name + - address + - registrationNumber + properties: + latitude: + label: Latitude + type: number + longitude: + label: Longitude + type: number + censusBlock: + label: Census block + cadastralCode: + label: Cadastral code + type: identifier + area: + label: Area + type: number + registrationNumber: + label: Registration number + type: identifier + titleNumber: + label: Title number + type: identifier + tenure: + label: Tenure + encumbrance: + label: Encumbrance + description: > + An encumbrance is a right to, interest in, or legal liability on real + property that does not prohibit passing title to the property but that + diminishes its value. + propertyType: + label: Property type + landType: + label: Land type + createDate: + label: Record date + type: date + parent: + label: "Parent unit" + description: "If this entity is a subunit, another entity (real estate) is its parent" + reverse: + label: "Subunits" + name: subunits + type: entity + range: RealEstate diff --git a/schemas/4.6.0/Representation.yaml b/schemas/4.6.0/Representation.yaml new file mode 100644 index 0000000..11535ec --- /dev/null +++ b/schemas/4.6.0/Representation.yaml @@ -0,0 +1,36 @@ +Representation: + label: "Representation" + plural: "Representations" + description: "A mediatory, intermediary, middleman, or broker acting on behalf of a legal entity." + extends: + - Interest + matchable: false + featured: + - agent + - client + - role + required: + - agent + - client + edge: # AGENT represents CLIENT + source: agent + label: "represents" + target: client + directed: true + caption: + - role + properties: + agent: # aka representative / incorporation agent + label: "Agent" + type: entity + range: LegalEntity + reverse: + name: agencyClient + label: "Clients" + client: + label: "Client" + type: entity + range: LegalEntity + reverse: + name: agentRepresentation + label: "Agents" diff --git a/schemas/4.6.0/Risk.yaml b/schemas/4.6.0/Risk.yaml new file mode 100644 index 0000000..b15a91e --- /dev/null +++ b/schemas/4.6.0/Risk.yaml @@ -0,0 +1,43 @@ +Risk: + label: Risk + plural: Risks + description: "A risk associated with an entity." + extends: + - Interval + matchable: false + featured: + - entity + - country + - reason + - status + - startDate + required: + - entity + caption: + - reason + - status + properties: + entity: + label: "Entity" + reverse: + name: risks + label: "Risks" + type: entity + range: Thing + topics: + label: Topics + type: topic + status: + label: "Status" + duration: + label: "Duration" + type: number + reason: + label: "Reason" + type: text + country: + label: "Country" + type: country + listingDate: + label: "Listing date" + type: date diff --git a/schemas/4.6.0/Sanction.yaml b/schemas/4.6.0/Sanction.yaml new file mode 100644 index 0000000..d3a7457 --- /dev/null +++ b/schemas/4.6.0/Sanction.yaml @@ -0,0 +1,70 @@ +Sanction: + label: Sanction + plural: Sanctions + description: "A sanction designation." + extends: + - Interval + matchable: false + featured: + - entity + - country + - authority + - program + - startDate + required: + - entity + caption: + - program + properties: + entity: + label: "Entity" + reverse: + name: sanctions + label: "Sanctions" + type: entity + range: Thing + authority: + label: "Authority" + authorityId: + label: "Authority-issued identifier" + # eg. OFAC IDs, FCDO IDs, etc. + type: identifier + unscId: + label: "UN SC identifier" + description: "Identifier issued by the UN Security Council for sanctions designations" + type: identifier + maxLength: 16 + program: + label: "Program" + programId: + # This is a unique identifier for the program issued by OpenSanctions, but + # could also be used for authority-issued IDs in other usage scenarios. + label: "Program ID" + type: identifier + maxLength: 64 + programUrl: + label: "Program URL" + type: url + provisions: + label: "Scope of sanctions" + status: + label: "Status" + examples: + - Active + - Inactive + - Expired + - Suspended + duration: + label: "Duration" + type: number + reason: + label: "Reason" + description: An explanation of the designation's justification. + type: text + country: + label: "Country" + type: country + listingDate: + label: "Listing date" + description: "The date on which the designation is listed; distinct from the `startDate`, which is the date on which the designation goes into effect" + type: date diff --git a/schemas/4.6.0/Security.yaml b/schemas/4.6.0/Security.yaml new file mode 100644 index 0000000..730b276 --- /dev/null +++ b/schemas/4.6.0/Security.yaml @@ -0,0 +1,59 @@ +Security: + extends: + - Asset + label: Security + plural: Securities + description: "A tradeable financial asset." + matchable: true + featured: + - isin + - name + - issuer + - country + caption: + - name + - isin + - registrationNumber + temporalExtent: + start: + - issueDate + end: + - maturityDate + properties: + isin: + label: ISIN + description: International Securities Identification Number + type: identifier + format: isin + maxLength: 16 + registrationNumber: + label: Registration number + type: identifier + ticker: + label: Stock ticker symbol + type: identifier + figiCode: + label: Financial Instrument Global Identifier + type: identifier + format: figi + maxLength: 16 + issuer: + label: "Issuer" + type: entity + range: LegalEntity + # FIXME: Should this be `Organization`? + reverse: + label: "Issued securities" + name: securities + issueDate: + label: Date issued + type: date + maturityDate: + label: Maturity date + type: date + type: + label: Type + classification: + label: Classification + collateral: + label: Collateral diff --git a/schemas/4.6.0/Similar.yaml b/schemas/4.6.0/Similar.yaml new file mode 100644 index 0000000..c0de910 --- /dev/null +++ b/schemas/4.6.0/Similar.yaml @@ -0,0 +1,37 @@ +Similar: + label: Similar + plural: Similar entities + description: > + A link between two entities that are presumed to be the same, e.g. as the + outcome of a probabilistic record linkage process. + matchable: false + generated: true + featured: + - candidate + - match + - confidenceScore + caption: + - confidenceScore + - criteria + properties: + candidate: + label: "Candidate" + type: entity + range: Thing + reverse: + name: candidateSimilars + label: "Similar to this" + match: + label: "Match" + type: entity + range: Thing + reverse: + name: matchSimilars + label: "Similar as this" + confidenceScore: + label: Confidence score + type: number + criteria: + label: Matching criteria + matcher: + label: Matcher diff --git a/schemas/4.6.0/Succession.yaml b/schemas/4.6.0/Succession.yaml new file mode 100644 index 0000000..59716e7 --- /dev/null +++ b/schemas/4.6.0/Succession.yaml @@ -0,0 +1,36 @@ +Succession: + label: "Succession" + plural: "Successions" + description: "Two entities that legally succeed each other." + extends: + - Interest + matchable: false + featured: + - predecessor + - successor + - date + required: + - predecessor + - successor + edge: # PREDECESSOR preceeds SUCCESSOR + source: predecessor + label: "preceeds" + target: successor + directed: true + caption: + - date + properties: + predecessor: + label: "Predecessor" + type: entity + range: LegalEntity + reverse: + name: successors + label: "Successors" + successor: + label: "Successor" + type: entity + range: LegalEntity + reverse: + name: predecessors + label: "Predecessors" diff --git a/schemas/4.6.0/Table.yaml b/schemas/4.6.0/Table.yaml new file mode 100644 index 0000000..125c394 --- /dev/null +++ b/schemas/4.6.0/Table.yaml @@ -0,0 +1,32 @@ +Table: + extends: + - Document + label: Table + plural: Tables + description: > + A document structured into rows and cells. This includes simple CSV files, spreadsheet + sheets or database relations. + matchable: false + generated: true + featured: + - title + - fileName + - mimeType + - parent + caption: + - title + - name + - fileName + properties: + columns: + label: "Column headings" + hidden: true + type: json + rowCount: + label: "Number of rows" + type: number + csvHash: + label: "CSV alternative version checksum" + hidden: true + type: checksum + matchable: false diff --git a/schemas/4.6.0/TaxRoll.yaml b/schemas/4.6.0/TaxRoll.yaml new file mode 100644 index 0000000..7557546 --- /dev/null +++ b/schemas/4.6.0/TaxRoll.yaml @@ -0,0 +1,40 @@ +TaxRoll: + label: "Tax roll" + plural: "Tax rolls" + description: "A tax declaration of an individual." + extends: + - Interval + icon: fa-bank + matchable: false + featured: + - taxee + - date + - income + - wealth + - taxPaid + required: + - taxee + properties: + taxee: + label: "Taxee" + type: entity + range: LegalEntity + reverse: + name: taxRolls + label: "Tax rolls" + country: + label: "Country" + type: country + surname: + label: "Surname" + givenName: + label: "Given name" + birthDate: + label: "Birth date" + type: date + income: + label: "Registered income" + taxPaid: + label: "Amount of tax paid" + wealth: + label: "Registered wealth" diff --git a/schemas/4.6.0/Thing.yaml b/schemas/4.6.0/Thing.yaml new file mode 100644 index 0000000..34b0a94 --- /dev/null +++ b/schemas/4.6.0/Thing.yaml @@ -0,0 +1,139 @@ +Thing: + # Kein Ding, digga, das Ding hat swing. + # Root type of all entities that should be rendered in Aleph. + abstract: true + matchable: false + featured: + - name + - country + required: + - name + caption: + - name + properties: + name: + label: Name + description: "The primary name of the entity" + type: name + alias: + label: Alias + description: "An alternative or secondary name" + type: name + previousName: + label: Previous name + description: "A former name of the entity" + type: name + weakAlias: + label: Weak alias + type: name + description: "A relatively broad or generic alias that should not be used for matching in screening systems. It may still may be useful for identification purposes, particularly in confirming a possible match triggered by other identifier information." + matchable: false + country: + label: Country + description: "An association between the entity and a country that is not covered by a more specific property (e.g. `jurisdiction`, `birthCountry`, `mainCountry`)" + type: country + summary: + label: Summary + description: "A short one-liner description; see also `description`, `notes`" + type: text + # OS notes: discouraged in favor of `notes` in most cases. + notes: + label: Notes + description: "Narrative description of the entity; see also `description`, `summary`" + type: text + description: + label: Description + description: "A longer description; see also `notes`, `summary`" + type: text + # OS notes: discouraged in favor of `notes` in most cases. + sourceUrl: + label: Source link + description: "A deep link to a source website for the profile" + type: url + matchable: false + publisher: + label: "Publishing source" + matchable: false + publisherUrl: + label: "Publishing source URL" + type: url + matchable: false + alephUrl: + label: Aleph URL + type: url + hidden: true + matchable: false + wikipediaUrl: + label: Wikipedia Article + type: url + wikidataId: + label: Wikidata ID + type: identifier + format: wikidata + maxLength: 32 + examples: + - Q7747 + keywords: + label: Keywords + description: "Plain text keywords provided for the entity; prefer more specific `type`, `status`, etc. as appropriate" + topics: + label: Topics + description: "Controlled tags used to qualify the entity and associate it with a risk category" + examples: + - sanction + - debarment + - role.pep + type: topic + address: + label: Address + description: "A textual description of an address linked to the entity" + type: address + addressEntity: + label: Address + description: "A reference to an `Address` entity with structured place information" + reverse: + name: things + label: "Located there" + type: entity + range: Address + program: # Used by sanctions + label: Program + description: Regulatory program or sanctions list on which an entity is listed + programId: + # This is a unique identifier for the program issued by OpenSanctions, but + # could also be used for authority-issued IDs in other usage scenarios. + label: "Program ID" + type: identifier + maxLength: 64 + hidden: true + matchable: false + proof: + label: Source document + reverse: + name: proven + label: "Derived entities" + type: entity + range: Document + indexText: + # This is a leaked abstraction from aleph. The idea is to have some + # additional text field that can be used to associate searchable text + # with an entity. This will be removed as a property upon indexing so + # that it can never be retrieved. + label: Index text + hidden: true + type: text + createdAt: + label: "Created at" + description: "The date on which the entity was created, not to be confused with an internal 'first saved'-style metadata field" + type: date + matchable: false + modifiedAt: + label: "Modified on" + description: "The date on which the entity was modified, not to be confused with an internal 'last updated'-style metadata field" + type: date + matchable: false + retrievedAt: + label: "Retrieved on" + description: "Retrieval date generated by a data gathering system, not to be confused with an internal 'first found'-style metadata field" + type: date + matchable: false diff --git a/schemas/4.6.0/Trip.yaml b/schemas/4.6.0/Trip.yaml new file mode 100644 index 0000000..33c41db --- /dev/null +++ b/schemas/4.6.0/Trip.yaml @@ -0,0 +1,42 @@ +Trip: + label: "Trip" + plural: "Trips" + extends: + - Event + matchable: false + caption: + - name + - startDate + - endDate + required: + - name + - endLocation + - startLocation + featured: + - endLocation + - startLocation + - vehicle + - startDate + - endDate + properties: + startLocation: + label: "Start location" + type: entity + range: Address + reverse: + name: tripsDeparting + label: "Trips departing" + endLocation: + label: "End location" + type: entity + range: Address + reverse: + name: tripsIncoming + label: "Trips incoming" + vehicle: + label: "Vehicle" + type: entity + range: Vehicle + reverse: + name: tripsInvolved + label: "Trips" diff --git a/schemas/4.6.0/UnknownLink.yaml b/schemas/4.6.0/UnknownLink.yaml new file mode 100644 index 0000000..2dcd402 --- /dev/null +++ b/schemas/4.6.0/UnknownLink.yaml @@ -0,0 +1,36 @@ +# Two entities are connected but the nature of the connection is tbd +UnknownLink: + label: "Other link" + plural: "Other links" + extends: + - Interest + matchable: false + featured: + - subject + - object + - role + required: + - subject + - object + edge: + source: subject + label: "linked to" + target: object + directed: false + caption: + - role + properties: + subject: + label: "Subject" + reverse: + name: unknownLinkTo + label: "Linked to" + type: entity + range: Thing + object: + label: "Object" + reverse: + name: unknownLinkFrom + label: "Linked from" + type: entity + range: Thing diff --git a/schemas/4.6.0/UserAccount.yaml b/schemas/4.6.0/UserAccount.yaml new file mode 100644 index 0000000..eb9731d --- /dev/null +++ b/schemas/4.6.0/UserAccount.yaml @@ -0,0 +1,47 @@ +UserAccount: + extends: + - Thing + label: "User account" + plural: "User accounts" + matchable: true + generated: true + featured: + - username + - service + - email + - owner + required: + - username + caption: + - username + - email + - service + properties: + owner: + label: "Owner" + type: entity + range: LegalEntity + reverse: + name: userAccounts + label: "User accounts" + service: + label: "Service" + type: string + email: + label: Email + type: email + description: "Email address" + phone: + label: Phone + type: phone + description: "Phone number" + maxLength: 32 + username: + label: "Username" + type: string + password: + label: "Password" + type: string + ipAddress: + label: "IP address" + type: ip diff --git a/schemas/4.6.0/Value.yaml b/schemas/4.6.0/Value.yaml new file mode 100644 index 0000000..74d6646 --- /dev/null +++ b/schemas/4.6.0/Value.yaml @@ -0,0 +1,17 @@ +Value: + label: "Value" + plural: "Values" + abstract: true + matchable: false + properties: + amount: + label: "Amount" + type: number + currency: + label: "Currency" + amountUsd: + label: "Amount in USD" + type: number + amountEur: + label: "Amount in EUR" + type: number diff --git a/schemas/4.6.0/Vehicle.yaml b/schemas/4.6.0/Vehicle.yaml new file mode 100644 index 0000000..591314f --- /dev/null +++ b/schemas/4.6.0/Vehicle.yaml @@ -0,0 +1,56 @@ +Vehicle: + label: Vehicle + plural: Vehicles + extends: + - Asset + matchable: false + featured: + - type + - name + - registrationNumber + - country + - owner + caption: + - name + - registrationNumber + temporalExtent: + start: + - buildDate + - registrationDate + end: + - deregistrationDate + properties: + registrationNumber: + label: Registration number + type: identifier + type: + label: Type + examples: + - Bulk carrier + model: + label: Model + owner: + deprecated: true + label: Owner + description: "Deprecated, use `Ownership` link instead" + type: entity + range: LegalEntity + reverse: + name: ownedVehicles + label: "Vehicles owned" + operator: + label: Operator + type: entity + range: LegalEntity + reverse: + name: operatedVehicles + label: "Vehicles operated" + buildDate: + label: Build Date + type: date + registrationDate: + label: Registration Date + type: date + deregistrationDate: + label: De-registration Date + type: date diff --git a/schemas/4.6.0/Vessel.yaml b/schemas/4.6.0/Vessel.yaml new file mode 100644 index 0000000..1a87bbf --- /dev/null +++ b/schemas/4.6.0/Vessel.yaml @@ -0,0 +1,59 @@ +Vessel: + label: Vessel + plural: Vessels + description: > + A boat or ship. Typically flying some sort of national flag. + extends: + - Vehicle + matchable: true + featured: + - name + - imoNumber + - type + - flag + required: + - name + caption: + - name + - imoNumber + properties: + imoNumber: + label: IMO Number + type: identifier + format: imo + maxLength: 16 + crsNumber: + label: CRS Number + type: identifier + flag: + label: Flag + type: country + registrationPort: + label: Port of Registration + navigationArea: + label: Navigation Area + tonnage: + label: Tonnage + type: number + grossRegisteredTonnage: + label: Gross Registered Tonnage + type: number + deadweightTonnage: + label: Deadweight Tonnage + description: "Weight of the vessel when not carrying freight" + type: number + nameChangeDate: + label: Date of Name Change + type: date + callSign: + label: Call Sign + type: identifier + pastFlags: + label: Past Flags + type: country + pastTypes: + label: Past Types + mmsi: + label: MMSI + type: identifier + maxLength: 16 diff --git a/schemas/4.6.0/Video.yaml b/schemas/4.6.0/Video.yaml new file mode 100644 index 0000000..e63d60d --- /dev/null +++ b/schemas/4.6.0/Video.yaml @@ -0,0 +1,20 @@ +Video: + extends: + - Document + label: Video + plural: Videos + matchable: false + generated: true + featured: + - title + - fileName + - mimeType + - parent + caption: + - fileName + - title + properties: + duration: + label: "Duration" + description: "Duration of the video in ms" + type: number diff --git a/schemas/4.6.0/Workbook.yaml b/schemas/4.6.0/Workbook.yaml new file mode 100644 index 0000000..d3001ad --- /dev/null +++ b/schemas/4.6.0/Workbook.yaml @@ -0,0 +1,18 @@ +Workbook: + extends: + - Folder + label: Workbook + plural: Workbooks + description: > + A spreadsheet document, for example from Excel. Each spreadsheet contains a set + of sheets that hold actual data. + matchable: false + generated: true + featured: + - title + - fileName + # - mimeType + - parent + caption: + - fileName + - title diff --git a/src/generated/entities.rs b/src/generated/entities.rs index 32779d8..817142e 100644 --- a/src/generated/entities.rs +++ b/src/generated/entities.rs @@ -3490,12 +3490,13 @@ pub struct Company { )] pub cage_code: Option>, ///Property: Capital - #[serde(skip_serializing_if = "Option::is_none")] - #[cfg_attr( - feature = "builder", - builder(with = |value:impl Into|vec![value.into()]) + #[serde( + skip_serializing_if = "Option::is_none", + deserialize_with = "deserialize_opt_f64_vec", + default )] - pub capital: Option>, + #[cfg_attr(feature = "builder", builder(with = |value:f64|vec![value]))] + pub capital: Option>, ///Property: SEC Central Index Key #[serde(skip_serializing_if = "Option::is_none")] #[cfg_attr( @@ -3559,7 +3560,7 @@ pub struct Company { builder(with = |value:impl Into|vec![value.into()]) )] pub duns_code: Option>, - ///Property: E-Mail + ///Property: Email #[serde(skip_serializing_if = "Option::is_none")] #[cfg_attr( feature = "builder", @@ -10381,7 +10382,7 @@ pub struct LegalEntity { builder(with = |value:impl Into|vec![value.into()]) )] pub duns_code: Option>, - ///Property: E-Mail + ///Property: Email #[serde(skip_serializing_if = "Option::is_none")] #[cfg_attr( feature = "builder", @@ -12463,6 +12464,13 @@ pub struct Occupancy { builder(with = |value:impl Into|vec![value.into()]) )] pub aleph_url: Option>, + ///Property: Constituency + #[serde(skip_serializing_if = "Option::is_none")] + #[cfg_attr( + feature = "builder", + builder(with = |value:impl Into|vec![value.into()]) + )] + pub constituency: Option>, ///Property: Date #[serde(skip_serializing_if = "Option::is_none")] #[cfg_attr( @@ -12519,6 +12527,13 @@ pub struct Occupancy { builder(with = |value:impl Into|vec![value.into()]) )] pub names_mentioned: Option>, + ///Property: Political group + #[serde(skip_serializing_if = "Option::is_none")] + #[cfg_attr( + feature = "builder", + builder(with = |value:impl Into|vec![value.into()]) + )] + pub political_group: Option>, ///Property: Position occupied #[serde(default)] #[cfg_attr( @@ -12598,6 +12613,7 @@ impl Occupancy { id: id.into(), schema: "Occupancy".to_string(), aleph_url: None, + constituency: None, date: None, declaration_date: None, description: None, @@ -12606,6 +12622,7 @@ impl Occupancy { index_text: None, modified_at: None, names_mentioned: None, + political_group: None, post: Vec::new(), proof: None, publisher: None, @@ -12755,7 +12772,7 @@ pub struct Organization { builder(with = |value:impl Into|vec![value.into()]) )] pub duns_code: Option>, - ///Property: E-Mail + ///Property: Email #[serde(skip_serializing_if = "Option::is_none")] #[cfg_attr( feature = "builder", @@ -15265,7 +15282,7 @@ pub struct Person { builder(with = |value:impl Into|vec![value.into()]) )] pub education: Option>, - ///Property: E-Mail + ///Property: Email #[serde(skip_serializing_if = "Option::is_none")] #[cfg_attr( feature = "builder", @@ -16550,7 +16567,7 @@ pub struct Position { builder(with = |value:impl Into|vec![value.into()]) )] pub source_url: Option>, - ///Property: Subnational jurisdiction name or code + ///Property: Subnational area #[serde(skip_serializing_if = "Option::is_none")] #[cfg_attr( feature = "builder", @@ -17312,7 +17329,7 @@ pub struct PublicBody { builder(with = |value:impl Into|vec![value.into()]) )] pub duns_code: Option>, - ///Property: E-Mail + ///Property: Email #[serde(skip_serializing_if = "Option::is_none")] #[cfg_attr( feature = "builder", @@ -20866,7 +20883,7 @@ pub struct UserAccount { builder(with = |value:impl Into|vec![value.into()]) )] pub description: Option>, - ///Property: E-Mail + ///Property: Email #[serde(skip_serializing_if = "Option::is_none")] #[cfg_attr( feature = "builder", diff --git a/src/generated/ftm_entity.rs b/src/generated/ftm_entity.rs index 76eaf56..434b1c2 100644 --- a/src/generated/ftm_entity.rs +++ b/src/generated/ftm_entity.rs @@ -248,25 +248,37 @@ impl FtmEntity { "Audio" => Ok(FtmEntity::Audio(serde_json::from_value(value)?)), "BankAccount" => Ok(FtmEntity::BankAccount(serde_json::from_value(value)?)), "Call" => Ok(FtmEntity::Call(serde_json::from_value(value)?)), - "CallForTenders" => Ok(FtmEntity::CallForTenders(serde_json::from_value(value)?)), + "CallForTenders" => { + Ok(FtmEntity::CallForTenders(serde_json::from_value(value)?)) + } "Company" => Ok(FtmEntity::Company(serde_json::from_value(value)?)), "Contract" => Ok(FtmEntity::Contract(serde_json::from_value(value)?)), - "ContractAward" => Ok(FtmEntity::ContractAward(serde_json::from_value(value)?)), + "ContractAward" => { + Ok(FtmEntity::ContractAward(serde_json::from_value(value)?)) + } "CourtCase" => Ok(FtmEntity::CourtCase(serde_json::from_value(value)?)), - "CourtCaseParty" => Ok(FtmEntity::CourtCaseParty(serde_json::from_value(value)?)), + "CourtCaseParty" => { + Ok(FtmEntity::CourtCaseParty(serde_json::from_value(value)?)) + } "CryptoWallet" => Ok(FtmEntity::CryptoWallet(serde_json::from_value(value)?)), "Debt" => Ok(FtmEntity::Debt(serde_json::from_value(value)?)), "Directorship" => Ok(FtmEntity::Directorship(serde_json::from_value(value)?)), "Document" => Ok(FtmEntity::Document(serde_json::from_value(value)?)), - "Documentation" => Ok(FtmEntity::Documentation(serde_json::from_value(value)?)), - "EconomicActivity" => Ok(FtmEntity::EconomicActivity(serde_json::from_value(value)?)), + "Documentation" => { + Ok(FtmEntity::Documentation(serde_json::from_value(value)?)) + } + "EconomicActivity" => { + Ok(FtmEntity::EconomicActivity(serde_json::from_value(value)?)) + } "Email" => Ok(FtmEntity::Email(serde_json::from_value(value)?)), "Employment" => Ok(FtmEntity::Employment(serde_json::from_value(value)?)), "Event" => Ok(FtmEntity::Event(serde_json::from_value(value)?)), "Family" => Ok(FtmEntity::Family(serde_json::from_value(value)?)), "Folder" => Ok(FtmEntity::Folder(serde_json::from_value(value)?)), "HyperText" => Ok(FtmEntity::HyperText(serde_json::from_value(value)?)), - "Identification" => Ok(FtmEntity::Identification(serde_json::from_value(value)?)), + "Identification" => { + Ok(FtmEntity::Identification(serde_json::from_value(value)?)) + } "Image" => Ok(FtmEntity::Image(serde_json::from_value(value)?)), "LegalEntity" => Ok(FtmEntity::LegalEntity(serde_json::from_value(value)?)), "License" => Ok(FtmEntity::License(serde_json::from_value(value)?)), @@ -286,12 +298,14 @@ impl FtmEntity { "PlainText" => Ok(FtmEntity::PlainText(serde_json::from_value(value)?)), "Position" => Ok(FtmEntity::Position(serde_json::from_value(value)?)), "Project" => Ok(FtmEntity::Project(serde_json::from_value(value)?)), - "ProjectParticipant" => Ok(FtmEntity::ProjectParticipant(serde_json::from_value( - value, - )?)), + "ProjectParticipant" => { + Ok(FtmEntity::ProjectParticipant(serde_json::from_value(value)?)) + } "PublicBody" => Ok(FtmEntity::PublicBody(serde_json::from_value(value)?)), "RealEstate" => Ok(FtmEntity::RealEstate(serde_json::from_value(value)?)), - "Representation" => Ok(FtmEntity::Representation(serde_json::from_value(value)?)), + "Representation" => { + Ok(FtmEntity::Representation(serde_json::from_value(value)?)) + } "Risk" => Ok(FtmEntity::Risk(serde_json::from_value(value)?)), "Sanction" => Ok(FtmEntity::Sanction(serde_json::from_value(value)?)), "Security" => Ok(FtmEntity::Security(serde_json::from_value(value)?)), @@ -306,9 +320,7 @@ impl FtmEntity { "Vessel" => Ok(FtmEntity::Vessel(serde_json::from_value(value)?)), "Video" => Ok(FtmEntity::Video(serde_json::from_value(value)?)), "Workbook" => Ok(FtmEntity::Workbook(serde_json::from_value(value)?)), - _ => Err(serde::de::Error::custom(format!( - "unknown FTM schema: {schema:?}" - ))), + _ => Err(serde::de::Error::custom(format!("unknown FTM schema: {schema:?}"))), } } /// Serialize to standard FTM nested JSON format From e58c3141ca3e0aff4cb82ae9a729d0cc849e374f Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 9 Mar 2026 14:34:06 +0000 Subject: [PATCH 2/4] Remove *.yml glob from justfile schema download recipe All FTM schema files use .yaml extension as of 4.6.0, so the *.yml glob and error suppression are no longer needed. https://claude.ai/code/session_0171TgDhFJm4eu3mptCAinGE --- justfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/justfile b/justfile index 2d9123b..d4ea633 100644 --- a/justfile +++ b/justfile @@ -10,7 +10,7 @@ download-ftm-schema VERSION: mkdir -p schemas/{{VERSION}}/ wget https://github.com/opensanctions/followthemoney/archive/refs/tags/v{{VERSION}}.zip unzip v{{VERSION}}.zip >/dev/null - mv followthemoney-{{VERSION}}/followthemoney/schema/*.yaml followthemoney-{{VERSION}}/followthemoney/schema/*.yml schemas/{{VERSION}}/ 2>/dev/null; true + mv followthemoney-{{VERSION}}/followthemoney/schema/*.yaml schemas/{{VERSION}}/ rm -rf followthemoney-{{VERSION}}/ v{{VERSION}}.zip test: From 88ea1bd7030cd0196b011249d5b7e774c704306d Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 9 Mar 2026 14:34:45 +0000 Subject: [PATCH 3/4] Remove old schemas/4.5.0 directory No longer needed now that we've upgraded to 4.6.0. https://claude.ai/code/session_0171TgDhFJm4eu3mptCAinGE --- schemas/4.5.0/Address.yaml | 78 ----------- schemas/4.5.0/Airplane.yaml | 27 ---- schemas/4.5.0/Analyzable.yaml | 53 ------- schemas/4.5.0/Article.yaml | 16 --- schemas/4.5.0/Asset.yaml | 15 -- schemas/4.5.0/Associate.yaml | 41 ------ schemas/4.5.0/Audio.yaml | 24 ---- schemas/4.5.0/BankAccount.yaml | 69 ---------- schemas/4.5.0/Call.yaml | 48 ------- schemas/4.5.0/CallForTenders.yaml | 117 ---------------- schemas/4.5.0/Company.yaml | 111 --------------- schemas/4.5.0/Contract.yaml | 70 ---------- schemas/4.5.0/ContractAward.yaml | 69 ---------- schemas/4.5.0/CourtCase.yaml | 38 ----- schemas/4.5.0/CourtCaseParty.yaml | 35 ----- schemas/4.5.0/CryptoWallet.yaml | 52 ------- schemas/4.5.0/Debt.yaml | 37 ----- schemas/4.5.0/Directorship.yaml | 41 ------ schemas/4.5.0/Document.yaml | 117 ---------------- schemas/4.5.0/Documentation.yaml | 38 ----- schemas/4.5.0/EconomicActivity.yaml | 137 ------------------ schemas/4.5.0/Email.yaml | 76 ---------- schemas/4.5.0/Employment.yaml | 39 ------ schemas/4.5.0/Event.yaml | 43 ------ schemas/4.5.0/Family.yaml | 41 ------ schemas/4.5.0/Folder.yaml | 13 -- schemas/4.5.0/HyperText.yaml | 21 --- schemas/4.5.0/Identification.yaml | 40 ------ schemas/4.5.0/Image.yaml | 32 ----- schemas/4.5.0/Interest.yaml | 15 -- schemas/4.5.0/Interval.yaml | 81 ----------- schemas/4.5.0/LegalEntity.yaml | 191 -------------------------- schemas/4.5.0/License.yaml | 27 ---- schemas/4.5.0/Membership.yaml | 39 ------ schemas/4.5.0/Mention.yaml | 54 -------- schemas/4.5.0/Message.yaml | 78 ----------- schemas/4.5.0/Note.yaml | 23 ---- schemas/4.5.0/Occupancy.yaml | 51 ------- schemas/4.5.0/Organization.yaml | 46 ------- schemas/4.5.0/Ownership.yaml | 52 ------- schemas/4.5.0/Package.yaml | 17 --- schemas/4.5.0/Page.yaml | 42 ------ schemas/4.5.0/Pages.yaml | 23 ---- schemas/4.5.0/Passport.yaml | 42 ------ schemas/4.5.0/Payment.yaml | 81 ----------- schemas/4.5.0/Person.yaml | 112 --------------- schemas/4.5.0/PlainText.yaml | 17 --- schemas/4.5.0/Position.yaml | 50 ------- schemas/4.5.0/Project.yaml | 27 ---- schemas/4.5.0/ProjectParticipant.yaml | 36 ----- schemas/4.5.0/PublicBody.yaml | 21 --- schemas/4.5.0/RealEstate.yaml | 59 -------- schemas/4.5.0/Representation.yaml | 36 ----- schemas/4.5.0/Risk.yaml | 43 ------ schemas/4.5.0/Sanction.yaml | 61 -------- schemas/4.5.0/Security.yaml | 59 -------- schemas/4.5.0/Similar.yaml | 37 ----- schemas/4.5.0/Succession.yaml | 36 ----- schemas/4.5.0/Table.yaml | 32 ----- schemas/4.5.0/TaxRoll.yaml | 40 ------ schemas/4.5.0/Thing.yaml | 116 ---------------- schemas/4.5.0/Trip.yaml | 42 ------ schemas/4.5.0/UnknownLink.yaml | 36 ----- schemas/4.5.0/UserAccount.yaml | 47 ------- schemas/4.5.0/Value.yaml | 17 --- schemas/4.5.0/Vehicle.yaml | 54 -------- schemas/4.5.0/Vessel.yaml | 60 -------- schemas/4.5.0/Video.yaml | 20 --- schemas/4.5.0/Workbook.yaml | 18 --- 69 files changed, 3476 deletions(-) delete mode 100644 schemas/4.5.0/Address.yaml delete mode 100644 schemas/4.5.0/Airplane.yaml delete mode 100644 schemas/4.5.0/Analyzable.yaml delete mode 100644 schemas/4.5.0/Article.yaml delete mode 100644 schemas/4.5.0/Asset.yaml delete mode 100644 schemas/4.5.0/Associate.yaml delete mode 100644 schemas/4.5.0/Audio.yaml delete mode 100644 schemas/4.5.0/BankAccount.yaml delete mode 100644 schemas/4.5.0/Call.yaml delete mode 100644 schemas/4.5.0/CallForTenders.yaml delete mode 100644 schemas/4.5.0/Company.yaml delete mode 100644 schemas/4.5.0/Contract.yaml delete mode 100644 schemas/4.5.0/ContractAward.yaml delete mode 100644 schemas/4.5.0/CourtCase.yaml delete mode 100644 schemas/4.5.0/CourtCaseParty.yaml delete mode 100644 schemas/4.5.0/CryptoWallet.yaml delete mode 100644 schemas/4.5.0/Debt.yaml delete mode 100644 schemas/4.5.0/Directorship.yaml delete mode 100644 schemas/4.5.0/Document.yaml delete mode 100644 schemas/4.5.0/Documentation.yaml delete mode 100644 schemas/4.5.0/EconomicActivity.yaml delete mode 100644 schemas/4.5.0/Email.yaml delete mode 100644 schemas/4.5.0/Employment.yaml delete mode 100644 schemas/4.5.0/Event.yaml delete mode 100644 schemas/4.5.0/Family.yaml delete mode 100644 schemas/4.5.0/Folder.yaml delete mode 100644 schemas/4.5.0/HyperText.yaml delete mode 100644 schemas/4.5.0/Identification.yaml delete mode 100644 schemas/4.5.0/Image.yaml delete mode 100644 schemas/4.5.0/Interest.yaml delete mode 100644 schemas/4.5.0/Interval.yaml delete mode 100644 schemas/4.5.0/LegalEntity.yaml delete mode 100644 schemas/4.5.0/License.yaml delete mode 100644 schemas/4.5.0/Membership.yaml delete mode 100644 schemas/4.5.0/Mention.yaml delete mode 100644 schemas/4.5.0/Message.yaml delete mode 100644 schemas/4.5.0/Note.yaml delete mode 100644 schemas/4.5.0/Occupancy.yaml delete mode 100644 schemas/4.5.0/Organization.yaml delete mode 100644 schemas/4.5.0/Ownership.yaml delete mode 100644 schemas/4.5.0/Package.yaml delete mode 100644 schemas/4.5.0/Page.yaml delete mode 100644 schemas/4.5.0/Pages.yaml delete mode 100644 schemas/4.5.0/Passport.yaml delete mode 100644 schemas/4.5.0/Payment.yaml delete mode 100644 schemas/4.5.0/Person.yaml delete mode 100644 schemas/4.5.0/PlainText.yaml delete mode 100644 schemas/4.5.0/Position.yaml delete mode 100644 schemas/4.5.0/Project.yaml delete mode 100644 schemas/4.5.0/ProjectParticipant.yaml delete mode 100644 schemas/4.5.0/PublicBody.yaml delete mode 100644 schemas/4.5.0/RealEstate.yaml delete mode 100644 schemas/4.5.0/Representation.yaml delete mode 100644 schemas/4.5.0/Risk.yaml delete mode 100644 schemas/4.5.0/Sanction.yaml delete mode 100644 schemas/4.5.0/Security.yaml delete mode 100644 schemas/4.5.0/Similar.yaml delete mode 100644 schemas/4.5.0/Succession.yaml delete mode 100644 schemas/4.5.0/Table.yaml delete mode 100644 schemas/4.5.0/TaxRoll.yaml delete mode 100644 schemas/4.5.0/Thing.yaml delete mode 100644 schemas/4.5.0/Trip.yaml delete mode 100644 schemas/4.5.0/UnknownLink.yaml delete mode 100644 schemas/4.5.0/UserAccount.yaml delete mode 100644 schemas/4.5.0/Value.yaml delete mode 100644 schemas/4.5.0/Vehicle.yaml delete mode 100644 schemas/4.5.0/Vessel.yaml delete mode 100644 schemas/4.5.0/Video.yaml delete mode 100644 schemas/4.5.0/Workbook.yaml diff --git a/schemas/4.5.0/Address.yaml b/schemas/4.5.0/Address.yaml deleted file mode 100644 index ef824bb..0000000 --- a/schemas/4.5.0/Address.yaml +++ /dev/null @@ -1,78 +0,0 @@ -# OSM: https://wiki.openstreetmap.org/wiki/Proposed_features/House_numbers/Karlsruhe_Schema#Tags -# Seen in the wild: -# -# - full -# - remarks / note -# - c/o -# - location -# - unknown -# - address-details / street -# - house number / house name -# - address1 / address2 / address3 -# - city -# - po box -# - zip code / postcode / postal_code -# - region -# - area / state / province -# - country -Address: - label: Address - plural: Addresses - extends: - - Thing - description: > - A location associated with an entity. - matchable: true - generated: false - featured: - - full - - city - - street - - country - caption: - - full - - summary - - city - - remarks - properties: - full: - label: "Full address" - type: address - remarks: - label: "Remarks" - description: "Handling instructions, like 'care of'." - postOfficeBox: - label: "PO Box" - description: "A mailbox identifier at the post office" - street: - label: "Street address" - street2: - label: "Street address (ctd.)" - city: - label: "City" - description: "City, town, village or other locality" - postalCode: - label: "Postal code" - description: "Zip code or postcode." - maxLength: 16 - region: - label: "Region" - description: "Also province or area." - state: - label: "State" - description: "State or federal unit." - latitude: - label: "Latitude" - type: "number" - longitude: - label: "Longitude" - type: "number" - country: - label: "Country" - type: "country" - osmId: - label: "OpenStreetmap Place ID" - type: "identifier" - googlePlaceId: - label: "Google Places ID" - type: "identifier" diff --git a/schemas/4.5.0/Airplane.yaml b/schemas/4.5.0/Airplane.yaml deleted file mode 100644 index a38b11c..0000000 --- a/schemas/4.5.0/Airplane.yaml +++ /dev/null @@ -1,27 +0,0 @@ -Airplane: - label: Airplane - plural: Airplanes - extends: - - Vehicle - description: > - An airplane, helicopter or other flying vehicle. - matchable: true - featured: - - type # Airbus A320 214SL - - registrationNumber # A7-LAE - - country # Qatar - - operator # Qatar Airways - - owner # Qatar Airways - caption: - - name - - registrationNumber - properties: - serialNumber: # 36576093870 - label: Serial Number - type: identifier - icaoCode: # A320 - label: ICAO aircraft type designator - type: identifier - maxLength: 16 - manufacturer: # Airbus - label: Manufacturer diff --git a/schemas/4.5.0/Analyzable.yaml b/schemas/4.5.0/Analyzable.yaml deleted file mode 100644 index 4fb4cd6..0000000 --- a/schemas/4.5.0/Analyzable.yaml +++ /dev/null @@ -1,53 +0,0 @@ -Analyzable: - label: Analyzable - plural: Analyzables - description: > - An entity suitable for being processed via named-entity recognition. - abstract: true - matchable: false - generated: true - properties: - detectedLanguage: - label: "Detected language" - matchable: false - hidden: true - type: language - detectedCountry: - label: "Detected country" - matchable: false - hidden: true - type: country - namesMentioned: - label: "Detected names" - hidden: true - type: name - peopleMentioned: - label: "Detected people" - hidden: true - type: name - companiesMentioned: - label: "Detected companies" - hidden: true - type: name - ibanMentioned: - label: "Detected IBANs" - hidden: true - type: identifier - format: iban - ipMentioned: - label: "Detected IP addresses" - hidden: true - type: ip - locationMentioned: - label: "Detected locations" - hidden: true - matchable: false - type: address - phoneMentioned: - label: "Detected phones" - hidden: true - type: phone - emailMentioned: - label: "Detected e-mail addresses" - hidden: true - type: email diff --git a/schemas/4.5.0/Article.yaml b/schemas/4.5.0/Article.yaml deleted file mode 100644 index 07aab53..0000000 --- a/schemas/4.5.0/Article.yaml +++ /dev/null @@ -1,16 +0,0 @@ -Article: - extends: - - Document - label: Article - plural: Articles - description: > - A piece of media reporting about a subject. - matchable: false - generated: true - featured: - - title - - author - - publishedAt - caption: - - title - - fileName diff --git a/schemas/4.5.0/Asset.yaml b/schemas/4.5.0/Asset.yaml deleted file mode 100644 index eb422ec..0000000 --- a/schemas/4.5.0/Asset.yaml +++ /dev/null @@ -1,15 +0,0 @@ -Asset: - label: Asset - plural: Assets - description: > - A piece of property which can be owned and assigned a monetary value. - extends: - - Thing - - Value - featured: - - name - - amount - caption: - - name - abstract: false - matchable: false diff --git a/schemas/4.5.0/Associate.yaml b/schemas/4.5.0/Associate.yaml deleted file mode 100644 index f3206f1..0000000 --- a/schemas/4.5.0/Associate.yaml +++ /dev/null @@ -1,41 +0,0 @@ -Associate: - label: "Associate" - plural: "Associates" - description: "Non-family association between two people" - extends: - - Interval - matchable: false - featured: - - person - - associate - - relationship - required: - - person - - associate - edge: - source: person - label: "associated with" - target: associate - directed: false - caption: - - relationship - properties: - person: - label: "Person" - description: "The subject of the association." - type: entity - range: Person - reverse: - name: associates - label: "Associates" - associate: - label: "Associate" - description: "An associate of the subject person." - type: entity - range: Person - reverse: - name: associations - label: "Associations" - relationship: - label: "Relationship" - description: "Nature of the association" diff --git a/schemas/4.5.0/Audio.yaml b/schemas/4.5.0/Audio.yaml deleted file mode 100644 index f6d2a11..0000000 --- a/schemas/4.5.0/Audio.yaml +++ /dev/null @@ -1,24 +0,0 @@ -Audio: - extends: - - Document - label: Audio - plural: Audio files - matchable: false - generated: true - featured: - - title - - fileName - - mimeType - - parent - caption: - - fileName - - title - properties: - duration: - label: "Duration" - description: "Duration of the audio in ms" - type: number - samplingRate: - label: "Sampling Rate" - description: "Sampling rate of the audio in Hz" - type: number diff --git a/schemas/4.5.0/BankAccount.yaml b/schemas/4.5.0/BankAccount.yaml deleted file mode 100644 index 9b613e5..0000000 --- a/schemas/4.5.0/BankAccount.yaml +++ /dev/null @@ -1,69 +0,0 @@ -BankAccount: - label: Bank account - plural: Bank accounts - extends: - - Asset - description: > - An account held at a bank and controlled by an owner. This may also be used - to describe more complex arrangements like correspondent bank settlement accounts. - matchable: true - featured: - - accountNumber - - bankName - # required: - # - accountNumber - caption: - - name - - iban - - accountNumber - temporalExtent: - start: - - openingDate - end: - - closingDate - properties: - bankName: - label: Bank name - accountNumber: - label: Account number - type: identifier - maxLength: 64 - iban: - label: IBAN - type: identifier - format: iban - maxLength: 64 - bic: - label: Bank Identifier Code - type: identifier - format: bic - maxLength: 16 - bank: - label: Bank - type: entity - range: Organization - reverse: - name: bankAccounts - label: "Bank accounts" - accountType: - label: Account type - openingDate: - label: Opening date - type: date - closingDate: - label: Closing date - type: date - balance: - label: Balance - type: number - balanceDate: - label: Balance date - type: date - maxBalance: - label: Maximum balance - type: number - maxBalanceDate: - label: Maximum balance date - type: date - bankAddress: - label: Bank address diff --git a/schemas/4.5.0/Call.yaml b/schemas/4.5.0/Call.yaml deleted file mode 100644 index b11633f..0000000 --- a/schemas/4.5.0/Call.yaml +++ /dev/null @@ -1,48 +0,0 @@ -Call: - extends: - - Interval - label: "Call" - plural: "Calls" - matchable: false - generated: true - featured: - - callerNumber - - caller - - receiverNumber - - receiver - - date - caption: - - callerNumber - - receiverNumber - properties: - caller: - label: "Caller" - type: entity - range: LegalEntity - reverse: - name: callsMade - label: "Calls made" - callerNumber: - label: "Caller's Number" - type: phone - receiver: - label: "Receiver" - type: entity - range: LegalEntity - reverse: - name: callsReceived - label: "Calls received" - receiverNumber: - label: "Receiver's Number" - type: phone - duration: - label: "Duration" - descriptuon: "Call Duration in seconds" - type: number - # recording: - # label: "Recording of the call" - # type: entity - # range: Audio - # reverse: - # name: "recordedCall" - # label: "Recording of" diff --git a/schemas/4.5.0/CallForTenders.yaml b/schemas/4.5.0/CallForTenders.yaml deleted file mode 100644 index 5127e36..0000000 --- a/schemas/4.5.0/CallForTenders.yaml +++ /dev/null @@ -1,117 +0,0 @@ -CallForTenders: - label: "Call for tenders" - plural: "Calls for tenders" - description: > - A public appeal issued by an authority, possibly on behalf of another, - for buying a specific work, supply or service - extends: - - Thing - - Interval - matchable: false - required: - - title - - authority - featured: - - title - - authority - caption: - - title - properties: - callId: - label: "CfT unique id" - type: identifier - title: - label: "Title" - authority: - label: "Name of contracting authority" - reverse: - name: callForTenders - label: "Call For Tenders" - type: entity - range: LegalEntity - authorityReferenceId: - label: "Contracting authority reference ID" - type: identifier - onBehalfOf: - label: "Published on behalf of" - reverse: - name: delegatedCallForTenders - label: "Delegated call for tenders" - type: entity - range: LegalEntity - publicationDate: - label: "Date of publication/invitation" - type: date - evaluationMechanism: - label: "Evaluation mechanism" - procurementType: - label: "Procurement type" - directive: - label: "Directive" - procedure: - label: "Procedure" - involvesOutcome: - label: "Call for tenders result" - description: "The nature of the contractual agreement that will result from this CfT" - cpvCode: - label: "CPV code" - description: "Common Procurement Vocabulary (CPV)" - type: identifier - reverseAuctionsIncluded: - label: "Inclusion of e-Auctions" - # cf. https://mita.gov.mt/2021/10/05/reverse-bidding-for-data-connectivity-across-the-public-service-a-first-for-malta/ - nutsCode: - label: "NUTS code" - description: "Nomenclature of Territorial Units for Statistics (NUTS)" - type: identifier - relationToThreshold: - label: "Above or below threshold" - paymentOptions: - label: "Payment options" - submissionDeadline: - label: "Submission deadline" - type: date - clarificationDeadline: - label: "End of clarification period" - type: date - awardedInLots: - label: "Contract awarded in Lots" - numberOfLots: - label: "Number of lots" - type: number - lotsNames: - label: "Lots names" - tendersForLots: - # What does this mean? - label: "Tenders for lots" - maximumNumberOfLots: - label: "Maximum number of lots" - type: number - euFunding: - label: "EU funding" - multipleTenders: - label: "Multiple tenders will be accepted" - tedUrl: - label: "TED link for published notices" - type: url - fallsUnderGPPScope: - label: "Does this call fall under the scope of GPP?" - description: "European Green Public Procurement (GPP) or green purchasing." - certificationCheck: - label: "Certification check" - awardingDate: - label: "Date of awarding" - type: date - contractNoticeDate: - label: "Contract notice date" - type: date - awardNoticeDate: - label: "Award Notice Date" - type: date - tenderers: - label: "Tenderers" - reverse: - name: callForTenders - label: "Tender" - type: entity - range: LegalEntity diff --git a/schemas/4.5.0/Company.yaml b/schemas/4.5.0/Company.yaml deleted file mode 100644 index 8ac22d2..0000000 --- a/schemas/4.5.0/Company.yaml +++ /dev/null @@ -1,111 +0,0 @@ -Company: - label: Company - plural: Companies - description: > - A corporation, usually for profit. Does not distinguish between private and public - companies, and can also be used to model more specific constructs like trusts and - funds. Companies are assets, so they can be owned by other legal entities. - matchable: true - extends: - - Organization - - Asset - featured: - - name - - jurisdiction - - registrationNumber - - incorporationDate - required: - - name - caption: - - name - - alias - - abbreviation - - weakAlias - - previousName - - registrationNumber - properties: - jurisdiction: - label: Jurisdiction - type: country - registrationNumber: - label: Registration number - type: identifier - capital: - label: "Capital" - voenCode: - label: "VOEN" - description: "Azerbaijan taxpayer ID" - type: identifier - maxLength: 32 - coatoCode: - label: "COATO / SOATO / OKATO" - type: identifier - description: "Soviet classifier for territories, regions, districts, villages. Aka. SOATO and same as OKATO" - matchable: false - irsCode: - label: "IRS Number" - description: "US tax ID" - type: identifier - ipoCode: - label: "IPO" - type: identifier - matchable: false - cikCode: - label: "SEC Central Index Key" - description: "US SEC Central Index Key" - type: identifier - jibCode: - label: "JIB" - description: "Yugoslavia company ID" - type: identifier - mbsCode: - label: "MBS" - type: identifier - caemCode: - label: "COD CAEM" - description: "Romanian classifier used to identify the types of economic activities that a business can provide in Romania" - matchable: false - kppCode: - label: "KPP" - description: "Russian code issued by the tax authority, identifies the reason for registration at the Federal Tax Service (Russian: КПП). A company may have multiple KPP codes (e.g. for different branches), and the codes are not unique across companies." - type: identifier - matchable: false - okvedCode: - label: "OKVED(2) Classifier" - description: "Russian classifier that that categorizes businesses by their (primary and secondary) economic activities (Russian: ОКВЭД)" - matchable: false - okopfCode: - label: "OKOPF" - description: "Russian classifier that that categorizes different types of legal entities in Russia based on their organizational and legal structure (Russian: ОКОПФ)" - matchable: false - fnsCode: - label: "Federal tax service code" - description: "(RU, ФНС) Federal Tax Service related info" - type: identifier - matchable: false - fssCode: - label: "FSS" - description: "(RU, ФСС) Social Security" - bikCode: - label: "BIK" - description: "Russian bank account code" - type: identifier - pfrNumber: - label: "PFR Number" - description: "(RU, ПФР) Pension Fund Registration number. AAA-BBB-CCCCCC, where AAA is organisation region, BBB is district, CCCCCC number at a specific branch" - type: identifier - oksmCode: - label: OKSM - description: "Russian (ОКСМ) countries classifier" - matchable: false - isinCode: - label: ISIN - description: International Securities Identification Number - type: identifier - ticker: - label: Stock ticker symbol - type: identifier - ricCode: - label: Reuters Instrument Code - type: identifier - maxLength: 16 diff --git a/schemas/4.5.0/Contract.yaml b/schemas/4.5.0/Contract.yaml deleted file mode 100644 index 28be928..0000000 --- a/schemas/4.5.0/Contract.yaml +++ /dev/null @@ -1,70 +0,0 @@ -Contract: - label: "Contract" - plural: "Contracts" - description: > - An contract or contract lot issued by an authority. Multiple lots - may be awarded to different suppliers (see ContractAward). - extends: - - Asset - matchable: false - featured: - - title - - amount - - authority - - contractDate - required: - - title - caption: - - title - - name - - procedureNumber - temporalExtent: - start: - - contractDate - properties: - title: - label: "Title" - type: string - authority: - label: "Contract authority" - plural: "Contract authorities" - reverse: - name: contractAuthority - label: "Contracts issued" - type: entity - range: LegalEntity - project: - label: "Project" - reverse: - name: contracts - label: "Contracts" - type: entity - range: Project - type: - label: "Type" - description: > - Type of contract. Potentially W (Works), U (Supplies), S (Services). - contractDate: - label: "Contract date" - type: date - procedureNumber: - label: "Procedure number" - procedure: - label: "Contract procedure" - noticeId: - label: "Contract Award Notice ID" - numberAwards: - label: "Number of awards" - status: - label: "Status" - method: - label: "Procurement method" - criteria: - label: Contract award criteria - classification: - label: Classification - cancelled: - label: "Cancelled?" - language: - label: "Language" - type: language diff --git a/schemas/4.5.0/ContractAward.yaml b/schemas/4.5.0/ContractAward.yaml deleted file mode 100644 index 6b57aa4..0000000 --- a/schemas/4.5.0/ContractAward.yaml +++ /dev/null @@ -1,69 +0,0 @@ -ContractAward: - label: "Contract award" - plural: "Contract awards" - description: "A contract or contract lot as awarded to a supplier." - matchable: false - extends: - - Value - - Interest - required: - - supplier - - contract - featured: - - supplier - - contract - - amount - - lotNumber - - decisionReason - edge: - source: contract - label: "awarded to" - target: supplier - directed: true - caption: - - lotNumber - properties: - supplier: - label: "Supplier" - description: "The entity the contract was awarded to" - plural: "Suppliers" - reverse: - name: contractAwardSupplier - label: "Contracts awarded" - type: entity - range: LegalEntity - contract: - label: "Contract" - plural: "Contracts" - reverse: - name: awards - label: "Lots awarded" - type: entity - range: Contract - callForTenders: - label: "Call For Tenders" - type: entity - reverse: - name: contractAwards - label: "Contract Awards" - range: CallForTenders - lotNumber: - label: "Lot number" - documentNumber: - label: "Document number" - documentType: - label: "Document type" - decisionReason: - label: "Decision reason" - type: text - cpvCode: - label: "CPV code" - description: "Contract Procurement Vocabulary (what type of goods/services, EU)" - type: identifier - nutsCode: - label: "NUTS code" - description: "Nomencalture of Territorial Units for Statistics (NUTS)" - type: identifier - amended: - label: "Amended" - description: "Was this award amended, modified or updated by a subsequent document?" diff --git a/schemas/4.5.0/CourtCase.yaml b/schemas/4.5.0/CourtCase.yaml deleted file mode 100644 index 3e835d5..0000000 --- a/schemas/4.5.0/CourtCase.yaml +++ /dev/null @@ -1,38 +0,0 @@ -CourtCase: - label: Court case - plural: Court cases - extends: - - Thing - matchable: false - featured: - - name - - fileDate - - caseNumber - required: - - name - caption: - - name - - caseNumber - temporalExtent: - start: - - fileDate - end: - - closeDate - properties: - category: - label: Category - type: - label: Type - status: - label: Status - caseNumber: - label: Case number - type: identifier - court: - label: Court - fileDate: - label: File date - type: date - closeDate: - label: Close date - type: date diff --git a/schemas/4.5.0/CourtCaseParty.yaml b/schemas/4.5.0/CourtCaseParty.yaml deleted file mode 100644 index fdc3e75..0000000 --- a/schemas/4.5.0/CourtCaseParty.yaml +++ /dev/null @@ -1,35 +0,0 @@ -CourtCaseParty: - label: "Case party" - plural: "Case parties" - extends: - - Interest - matchable: false - featured: - - party - - case - - role - required: - - case - - party - edge: - source: party - label: "involved in" - target: case - directed: true - caption: - - role - properties: - party: - label: "Party" - reverse: - name: courtCase - label: "Court cases" - type: entity - range: Thing - case: - label: "Case" - reverse: - name: parties - label: "Parties" - type: entity - range: CourtCase diff --git a/schemas/4.5.0/CryptoWallet.yaml b/schemas/4.5.0/CryptoWallet.yaml deleted file mode 100644 index fa73d6e..0000000 --- a/schemas/4.5.0/CryptoWallet.yaml +++ /dev/null @@ -1,52 +0,0 @@ -CryptoWallet: - label: Cryptocurrency wallet - plural: Cryptocurrency wallets - extends: - - Thing - - Value - description: > - A cryptocurrency wallet is a view on the transactions conducted by one participant - on a blockchain / distributed ledger system. - matchable: true - featured: - - currency - - publicKey - caption: - - publicKey - - name - - summary - temporalExtent: - start: - - creationDate - properties: - publicKey: - label: Address - description: Public key used to identify the wallet - type: identifier - maxLength: 128 - privateKey: - label: Private key - accountId: - label: Account ID - description: Platform-specific user/account identifier - type: identifier - creationDate: - label: Creation date - type: date - currencySymbol: - label: Currency short code - managingExchange: - label: Managing exchange - holder: - label: Wallet holder - type: entity - range: LegalEntity - reverse: - name: cryptoWallets - label: "Cryptocurrency wallets" - balance: - label: Balance - type: number - balanceDate: - label: Balance date - type: date diff --git a/schemas/4.5.0/Debt.yaml b/schemas/4.5.0/Debt.yaml deleted file mode 100644 index 9b23145..0000000 --- a/schemas/4.5.0/Debt.yaml +++ /dev/null @@ -1,37 +0,0 @@ -Debt: - label: "Debt" - plural: "Debts" - description: "A monetary debt between two parties." - matchable: false - extends: - - Interval - - Value - required: - - debtor - featured: - - debtor - - creditor - - date - - amount - edge: - source: debtor - label: "owes" - target: creditor - directed: true - caption: - - amount - properties: - debtor: - label: "Debtor" - reverse: - name: debtDebtor - label: "Debts" - type: entity - range: LegalEntity - creditor: - label: "Creditor" - reverse: - name: debtCreditor - label: "Credits" - type: entity - range: LegalEntity diff --git a/schemas/4.5.0/Directorship.yaml b/schemas/4.5.0/Directorship.yaml deleted file mode 100644 index 2ac2c60..0000000 --- a/schemas/4.5.0/Directorship.yaml +++ /dev/null @@ -1,41 +0,0 @@ -Directorship: - label: "Directorship" - plural: "Directorships" - extends: - - Interest - matchable: false - featured: - - director - - organization - - role - - startDate - - endDate - required: - - director - - organization - caption: - - role - edge: - source: director - label: "directs" - target: organization - directed: true - caption: - - role - properties: - director: - label: "Director" - reverse: - name: directorshipDirector - label: "Directorships" - type: entity - range: LegalEntity - organization: - label: "Organization" - reverse: - name: directorshipOrganization - label: "Directors" - type: entity - range: Organization - secretary: - label: "Secretary" diff --git a/schemas/4.5.0/Document.yaml b/schemas/4.5.0/Document.yaml deleted file mode 100644 index 1df51ef..0000000 --- a/schemas/4.5.0/Document.yaml +++ /dev/null @@ -1,117 +0,0 @@ -Document: - extends: - - Thing - - Analyzable - label: File - plural: Files - matchable: false - generated: true - featured: - - title - - fileName - - mimeType - - parent - required: - - fileName - caption: - - fileName - - title - temporalExtent: - start: - - date - - authoredAt - - publishedAt - properties: - contentHash: - label: "Checksum" - description: "SHA1 hash of the data" - # hidden: true - type: checksum - title: - label: "Title" - type: string - caption: true - author: - label: "Author" - description: "The original author, not the uploader" - generator: - label: "Generator" - description: "The program used to generate this file" - crawler: - label: "Crawler" - description: "The crawler used to acquire this file" - fileSize: - label: "File size" - type: number - fileName: - label: "File name" - extension: - label: "File extension" - encoding: - label: "File encoding" - bodyText: - label: "Text" - hidden: true - type: "text" - messageId: - label: "Message ID" - description: "Message ID of a document; unique in most cases" - mimeType: - label: "MIME type" - type: mimetype - language: - label: "Language" - type: language - translatedLanguage: - label: "The language of the translated text" - hidden: true - type: language - translatedText: - label: "Translated version of the body text" - hidden: true - type: text - date: - label: "Date" - description: "If not otherwise specified" - type: date - authoredAt: - label: "Authored on" - type: date - matchable: false - publishedAt: - label: "Published on" - type: date - matchable: false - parent: - label: "Folder" - type: entity - range: Folder - reverse: - name: children - label: "Child documents" - hidden: true - ancestors: - label: "Ancestors" - type: entity - hidden: true - range: Folder - reverse: - name: descendants - hidden: true - label: "Descendants" - processingStatus: - label: "Processing status" - hidden: true - processingError: - label: "Processing error" - hidden: true - processingAgent: - label: "Processing agent" - description: "Name and version of the processing agent used to process the Document" - type: string - processedAt: - label: "Processed at" - description: "Date and time of the most recent ingestion of the Document" - type: date - matchable: false - hidden: true diff --git a/schemas/4.5.0/Documentation.yaml b/schemas/4.5.0/Documentation.yaml deleted file mode 100644 index 63e669a..0000000 --- a/schemas/4.5.0/Documentation.yaml +++ /dev/null @@ -1,38 +0,0 @@ -Documentation: - label: "Documentation" - plural: "Documentations" - description: > - Links some entity to a document, which might provide further detail or - evidence regarding the entity. - extends: - - Interest - matchable: false - featured: - - document - - entity - - role - required: - - document - - entity - edge: - source: document - label: "documents" - target: entity - directed: false - caption: - - role - properties: - document: - label: "Document" - reverse: - name: relatedEntities - label: "Related entities" - type: entity - range: Document - entity: - label: "Entity" - reverse: - name: documentedBy - label: "Documents" - type: entity - range: Thing diff --git a/schemas/4.5.0/EconomicActivity.yaml b/schemas/4.5.0/EconomicActivity.yaml deleted file mode 100644 index 0e687b7..0000000 --- a/schemas/4.5.0/EconomicActivity.yaml +++ /dev/null @@ -1,137 +0,0 @@ -EconomicActivity: - label: "Customs declaration" - plural: "Customs declarations" - description: "A foreign economic activity" - matchable: false - extends: - - Interval - featured: - - sender - - receiver - - contract - - goodsDescription - - startDate - - endDate - caption: - - summary - - goodsDescription - - ccdNumber - properties: - contract: - label: "Contract" - reverse: - name: economicActivityContract - label: "Used in customs" - type: entity - range: Contract - ccdNumber: - label: "Customs Cargo Declaration Number" - type: identifier - ccdValue: - label: "CCD Value" - description: "Declaration Value" - directionOfTransportation: - label: "Direction of transportation" - description: "Direction of transportation (import/export)" - customsProcedure: - label: "Customs Procedure" - description: "Customs Procedure — type of customs clearance" - vedCode: - label: "FEAC Code" - description: "(Код ТН ВЭД) Foreign Economic Activity Commodity Code" - type: identifier - vedCodeDescription: - label: "FEAC Code description" - description: "(Описание кода ТН ВЭД) Foreign Economic Activity Commodity Code description" - goodsDescription: - label: "Description of goods" - type: text - declarant: - label: "Declarant" - description: "Customs declarant" - type: entity - range: LegalEntity - reverse: - name: economicActivityDeclarant - label: "Customs declarations" - sender: - label: "Sender" - description: "Origin of the goods" - type: entity - range: LegalEntity - reverse: - name: economicActivitySender - label: "Goods originated" - receiver: - label: "Receiver" - description: "Destination of the goods" - type: entity - range: LegalEntity - reverse: - name: economicActivityReceiver - label: "Goods received" - contractHolder: - label: "Contract holder" - description: "Customs formalities caretaker" - type: entity - range: LegalEntity - reverse: - name: economicActivityHolder - label: "Customs declarations facilitated" - invoiceAmount: - label: "Invoice Value Amount" - description: "Invoice Value of goods" - customsAmount: - label: "Customs Value Amount" - description: "Customs Value of goods" - dollarExchRate: - label: "USD Exchange Rate" - description: "USD Exchange Rate for the activity" - tradingCountry: - label: "Trading Country" - description: "Trading Country of the company which transports the goods via Russian border" - type: country - departureCountry: - label: "Country of departure" - description: "Country out of which the goods are transported" - type: country - destinationCountry: - label: "Country of destination" - description: "Final destination for the goods" - type: country - originCountry: - label: "Country of origin" - description: "Country of origin of goods" - type: country - bankAccount: - label: "Bank Account" - description: "Bank account of the contract" - type: entity - range: BankAccount - reverse: - name: contractBankAccount - label: "Customs declarations" - bankRub: - label: "Rouble bank" - description: "Bank account for payments in roubles" - type: entity - range: BankAccount - reverse: - name: rubBankAccount - label: "Customs declarations (as rouble bank)" - bankForeign: - label: "Foreign currency bank" - description: "Bank account for payments in foreign currency" - type: entity - range: BankAccount - reverse: - name: foreignBankAccount - label: "Customs declarations (as foreign bank)" - transport: - label: "Transport" - description: "Means of transportation" - type: entity - range: Vehicle - reverse: - name: declaredCustoms - label: "Customs declarations" diff --git a/schemas/4.5.0/Email.yaml b/schemas/4.5.0/Email.yaml deleted file mode 100644 index d47f398..0000000 --- a/schemas/4.5.0/Email.yaml +++ /dev/null @@ -1,76 +0,0 @@ -Email: - extends: - - Folder - - PlainText - - HyperText - label: E-Mail - plural: E-Mails - description: - An internet mail message. The body can be formatted as plain text and/or HTML, - and the message may have any number of attachments. - matchable: false - generated: true - featured: - - subject - - date - - from - caption: - - subject - - threadTopic - - title - - name - - fileName - properties: - subject: - label: Subject - type: string - caption: true - threadTopic: - label: Thread topic - type: string - sender: - label: "Sender" - type: string - from: - label: "From" - type: string - to: - label: "To" - type: string - cc: - label: "CC" - description: "Carbon copy" - type: string - bcc: - label: "BCC" - description: "Blind carbon copy" - type: string - emitters: - label: "Emitter" - type: entity - range: LegalEntity - reverse: - name: emailsSent - label: "E-Mails sent" - recipients: - label: "Recipients" - type: entity - range: LegalEntity - reverse: - name: emailsReceived - label: "E-Mails received" - inReplyTo: - label: "In Reply To" - description: "Message ID of the preceding email in the thread" - hidden: true - inReplyToEmail: - label: Responding to - type: entity - range: Email - reverse: - name: responses - label: "Responses" - headers: - label: "Raw headers" - hidden: true - type: json diff --git a/schemas/4.5.0/Employment.yaml b/schemas/4.5.0/Employment.yaml deleted file mode 100644 index b2948cb..0000000 --- a/schemas/4.5.0/Employment.yaml +++ /dev/null @@ -1,39 +0,0 @@ -Employment: - label: "Employment" - plural: "Employments" - extends: - - Interest - matchable: false - featured: - - employer - - employee - - role - - startDate - - endDate - required: - - employer - - employee - caption: - - role - edge: - source: employee - label: "works for" - target: employer - directed: true - caption: - - role - properties: - employer: - label: "Employer" - type: entity - range: Organization - reverse: - name: employees - label: "Employees" - employee: - label: "Employee" - type: entity - range: Person - reverse: - name: employers - label: "Employers" diff --git a/schemas/4.5.0/Event.yaml b/schemas/4.5.0/Event.yaml deleted file mode 100644 index ed4fca7..0000000 --- a/schemas/4.5.0/Event.yaml +++ /dev/null @@ -1,43 +0,0 @@ -Event: - label: "Event" - plural: "Events" - extends: - - Interval - - Analyzable - - Thing - matchable: false - # generated: true - caption: - - name - - summary - - date - required: - - name - featured: - - name - - summary - - date - - location - properties: - location: - label: "Location" - type: address - country: - label: "Country" - type: country - important: - label: "Important" - organizer: - label: "Organizer" - type: entity - range: LegalEntity - reverse: - name: eventsOrganized - label: "Organized events" - involved: - label: "Involved" - type: entity - range: LegalEntity - reverse: - name: eventsInvolved - label: "Events" diff --git a/schemas/4.5.0/Family.yaml b/schemas/4.5.0/Family.yaml deleted file mode 100644 index 9127a7e..0000000 --- a/schemas/4.5.0/Family.yaml +++ /dev/null @@ -1,41 +0,0 @@ -Family: - label: "Family" - plural: "Family members" - description: "Family relationship between two people" - extends: - - Interval - matchable: false - featured: - - person - - relative - - relationship - required: - - person - - relative - edge: - source: person - label: "related to" - target: relative - directed: false - caption: - - relationship - properties: - person: - label: "Person" - description: "The subject of the familial relation." - type: entity - range: Person - reverse: - name: familyPerson - label: "Family members" - relative: - label: "Relative" - type: entity - range: Person - reverse: - name: familyRelative - label: "Relatives" - description: "The relative of the subject person." - relationship: - label: "Relationship" - description: "Nature of the relationship, from the person's perspective eg. 'mother', where 'relative' is mother of 'person'." diff --git a/schemas/4.5.0/Folder.yaml b/schemas/4.5.0/Folder.yaml deleted file mode 100644 index 7ad8958..0000000 --- a/schemas/4.5.0/Folder.yaml +++ /dev/null @@ -1,13 +0,0 @@ -Folder: - extends: - - Document - label: Folder - plural: Folders - matchable: false - generated: true - featured: - - title - - parent - caption: - - fileName - - title diff --git a/schemas/4.5.0/HyperText.yaml b/schemas/4.5.0/HyperText.yaml deleted file mode 100644 index db2ba4c..0000000 --- a/schemas/4.5.0/HyperText.yaml +++ /dev/null @@ -1,21 +0,0 @@ -HyperText: - # HTML document - extends: - - Document - label: Web page - plural: Web pages - matchable: false - generated: true - featured: - - title - - fileName - - mimeType - - parent - caption: - - title - - fileName - properties: - bodyHtml: - label: "HTML" - type: html - hidden: true diff --git a/schemas/4.5.0/Identification.yaml b/schemas/4.5.0/Identification.yaml deleted file mode 100644 index 71a77d0..0000000 --- a/schemas/4.5.0/Identification.yaml +++ /dev/null @@ -1,40 +0,0 @@ -Identification: - label: "Identification" - plural: "Identifications" - description: > - An form of identification associated with its holder and some issuing country. This - can be used for national ID cards, voter enrollments and similar instruments. - extends: - - Interval - matchable: false - featured: - - number - - country - - type - - holder - - startDate - - endDate - required: - - holder - - number - caption: - - number - properties: - holder: - label: "Identification holder" - type: entity - range: LegalEntity - reverse: - label: "Identifications" - name: identification - type: - label: "Type" - country: - label: "Country" - type: country - number: - label: "Document number" - type: identifier - maxLength: 64 - authority: - label: "Authority" diff --git a/schemas/4.5.0/Image.yaml b/schemas/4.5.0/Image.yaml deleted file mode 100644 index 5fb61c2..0000000 --- a/schemas/4.5.0/Image.yaml +++ /dev/null @@ -1,32 +0,0 @@ -Image: - # This schema defines an image file entity within the FollowTheMoney data model. - # If a `checksum` property is present, consider loading it from an Aleph archive - # or FtM data lake. Otherwise, use `sourceUrl` to fetch the image directly. - extends: - - Document - label: Image - plural: Images - description: > - An image file. - matchable: false - generated: true - featured: - - title - - fileName - - mimeType - - parent - caption: - - fileName - - title - properties: - pictured: - label: "Pictured" - reverse: - name: images - label: "Images" - type: entity - range: Person - credit: - label: "Credit" - description: "The credit or attribution for the image." - type: string diff --git a/schemas/4.5.0/Interest.yaml b/schemas/4.5.0/Interest.yaml deleted file mode 100644 index 09ad529..0000000 --- a/schemas/4.5.0/Interest.yaml +++ /dev/null @@ -1,15 +0,0 @@ -Interest: - label: "Interest" - extends: - - Interval - matchable: false - abstract: true - properties: - role: - label: "Role" - status: - label: "Status" - # level: - # label: "Level of interest" # direct/indirect - # votes: - # label: "Number of votes" diff --git a/schemas/4.5.0/Interval.yaml b/schemas/4.5.0/Interval.yaml deleted file mode 100644 index 8e1abb5..0000000 --- a/schemas/4.5.0/Interval.yaml +++ /dev/null @@ -1,81 +0,0 @@ -Interval: - # FOR THE LOVE OF ALL THAT IS GOOD AND BEAUTIFUL IN THIS UNVERSE: - # - # Intervals are not graph edges. - # - # Yes, many interval child schemata (e.g. Directorship, Ownership) can - # be interpreted as an edge between to Things. But that isn't intrinsic. - # If you write any code that assumes that Intervals == edges, it will - # be buggy and wrong. You will find there are intervals that link to - # only one thing (e.g. Sanction) or to much more than two (e.g. FEA). - # Just do not do it. - label: "Interval" - description: > - An object which is bounded in time. - matchable: false - abstract: true - temporalExtent: - start: - - startDate - - date - end: - - endDate - properties: - startDate: - label: "Start date" - type: date - endDate: - label: "End date" - type: date - date: - label: "Date" - type: date - summary: - label: "Summary" - type: text - description: - label: Description - type: text - recordId: - label: "Record ID" - sourceUrl: - label: "Source link" - type: url - matchable: false - proof: - label: Source document - reverse: - name: provenIntervals - label: "Derived relationships" - type: entity - range: Document - publisher: - label: "Publishing source" - publisherUrl: - label: "Publishing source URL" - type: url - matchable: false - alephUrl: - label: Aleph URL - type: url - hidden: true - matchable: false - namesMentioned: - label: "Detected names" - hidden: true - type: name - indexText: - # This is a leaked abstraction from aleph. The idea is to have some - # additional text field that can be used to associate searchable text - # with an entity. This will be removed as a property upon indexing so - # that it can never be retrieved. - label: Index text - hidden: true - type: text - modifiedAt: - label: "Modified on" - type: date - retrievedAt: - label: "Retrieved on" - type: date - matchable: false diff --git a/schemas/4.5.0/LegalEntity.yaml b/schemas/4.5.0/LegalEntity.yaml deleted file mode 100644 index 823baeb..0000000 --- a/schemas/4.5.0/LegalEntity.yaml +++ /dev/null @@ -1,191 +0,0 @@ -LegalEntity: - extends: - - Thing - label: Legal entity - plural: Legal entities - description: > - Any party to legal proceedings, such as asset ownership, corporate governance - or social interactions. Often used when raw data does not specify if something - is a person or company. - matchable: true - featured: - - name - - country - - legalForm - - status - required: - - name - caption: - - name - - alias - - abbreviation - - weakAlias - - previousName - - email - - phone - - registrationNumber - temporalExtent: - start: - - incorporationDate - end: - - dissolutionDate - properties: - abbreviation: - label: Abbreviation - type: name - description: "Abbreviated name or acronym" - # TODO: is un-matchable wise? The idea is to handle it like `weakAlias` rather than `alias`. - matchable: false - email: - label: E-Mail - type: email - description: "Email address" - phone: - label: Phone - type: phone - description: "Phone number" - maxLength: 32 - website: - label: Website - type: url - description: "Website address" - legalForm: - label: Legal form - # description: "" - matchable: false - incorporationDate: - label: Incorporation date - type: date - description: "The date the legal entity was incorporated" - dissolutionDate: - label: Dissolution date - type: date - description: "The date the legal entity was dissolved, if applicable" - taxStatus: - label: Tax status - # description: "Tax status, eg. ??" - matchable: false - status: - label: Status - # description: "Status, eg. ??" - matchable: false - sector: - label: Sector - # description: "Sector, eg. ??" - matchable: false - classification: - label: Classification - # description: "Classification, eg. ??" - matchable: false - registrationNumber: - label: Registration number - type: identifier - description: "Company registration number" - idNumber: - label: ID Number - type: identifier - description: "ID of any applicable personal identification document. Used mainly for people and their national ID cards." - taxNumber: - label: Tax Number - type: identifier - description: "Tax identification number" - licenseNumber: - label: License Number - type: identifier - description: "For licenses granted to an entity" - vatCode: - label: "V.A.T. Identifier" - description: "(EU) VAT number" - type: identifier - maxLength: 32 - jurisdiction: - label: Jurisdiction - type: country - description: "Country or region in which this entity operates" - mainCountry: - label: Country of origin - type: country - description: "Primary country of this entity" - opencorporatesUrl: - label: OpenCorporates URL - type: url - bvdId: - label: Bureau van Dijk ID - type: identifier - sayariId: - label: Sayari Entity ID - type: identifier - brightQueryId: - label: BrightQuery ID - type: identifier - brightQueryOrgId: - label: BrightQuery Organization ID - type: identifier - hidden: true - matchable: false - uscCode: - # cf. https://en.wikipedia.org/wiki/Unified_Social_Credit_Identifier - label: "USCC" - description: "Unified Social Credit Identifier" - type: identifier - format: uscc - icijId: - label: ICIJ ID - description: "ID according to International Consortium for Investigative Journalists" - okpoCode: - label: "OKPO" - description: "Russian industry classifier" - type: identifier - matchable: false - innCode: - label: "INN" - description: "Russian tax identification number (Russian: ИНН). Issued to businesses and individuals in Russia" - type: identifier - format: inn - maxLength: 32 - ogrnCode: - label: "OGRN" - description: "Identification number used in Russia's Unified State Register of Legal Entities (EGRUL) (Russian: ОГРН)" - type: identifier - format: ogrn - maxLength: 32 - leiCode: - # cf. https://www.gleif.org/en/about-lei/introducing-the-legal-entity-identifier-lei - label: "LEI" - description: "Legal Entity Identifier" - type: identifier - format: lei - maxLength: 32 - dunsCode: - label: "DUNS" - description: "Data Universal Numbering System - Dun & Bradstreet identifier" - type: identifier - maxLength: 16 - uniqueEntityId: - label: "Unique Entity ID" - description: "UEI from SAM.gov" - type: identifier - format: uei - maxLength: 32 - npiCode: - label: "NPI" - description: "National Provider Identifier, issued to health care providers in the United States" - type: identifier - format: npi - maxLength: 16 - swiftBic: - label: "SWIFT/BIC" - description: "Bank identifier code" - type: identifier - format: bic - maxLength: 16 - parent: - # Use `Ownership` link instead. - deprecated: true - label: "Parent company" - description: "If this entity is a subsidiary, another entity (company or organisation) is its parent" - reverse: - label: "Subsidiaries" - name: subsidiaries - type: entity - range: LegalEntity diff --git a/schemas/4.5.0/License.yaml b/schemas/4.5.0/License.yaml deleted file mode 100644 index 84f19eb..0000000 --- a/schemas/4.5.0/License.yaml +++ /dev/null @@ -1,27 +0,0 @@ -License: - label: License - plural: Licenses - description: "A grant of land, rights or property. A type of Contract" - extends: - - Contract - matchable: false - featured: - - name - - amount - - authority - - contractDate - - commodities - required: - - name - - authority - caption: - - name - properties: - area: - label: "Area" - type: number - description: "Spatial area of the license or concession" - commodities: - label: "Commodities" - reviewDate: - label: "License review date" diff --git a/schemas/4.5.0/Membership.yaml b/schemas/4.5.0/Membership.yaml deleted file mode 100644 index 6d91abf..0000000 --- a/schemas/4.5.0/Membership.yaml +++ /dev/null @@ -1,39 +0,0 @@ -Membership: - label: "Membership" - plural: "Memberships" - extends: - - Interest - matchable: false - featured: - - member - - organization - - role - - startDate - - endDate - required: - - member - - organization - caption: - - role - edge: - source: member - label: "belongs to" - target: organization - directed: true - caption: - - role - properties: - member: - label: "Member" - type: entity - range: LegalEntity - reverse: - name: membershipMember - label: "Memberships" - organization: - label: "Organization" - type: entity - range: Organization - reverse: - name: membershipOrganization - label: "Members" diff --git a/schemas/4.5.0/Mention.yaml b/schemas/4.5.0/Mention.yaml deleted file mode 100644 index 2e60e5b..0000000 --- a/schemas/4.5.0/Mention.yaml +++ /dev/null @@ -1,54 +0,0 @@ -Mention: - label: Mention - plural: Mentions - abstract: false - matchable: false - generated: true - hidden: true - featured: - - document - - name - - resolved - required: - - document - - name - caption: - - name - properties: - document: - label: "Document" - reverse: - name: mentionedEntities - label: "Extracted names" - hidden: true - type: entity - range: Document - resolved: - label: "Entity" - reverse: - name: mentionedBy - label: "Document mentions" - type: entity - range: LegalEntity - name: - label: "Name" - type: name - detectedSchema: - label: "Detected entity type" - hidden: true - matchable: false - contextCountry: - label: "Co-occurring countries" - hidden: true - type: country - matchable: false - contextPhone: - label: "Co-occurring phone numbers" - hidden: true - type: phone - matchable: false - contextEmail: - label: "Co-occurring e-mail addresses" - hidden: true - type: email - matchable: false diff --git a/schemas/4.5.0/Message.yaml b/schemas/4.5.0/Message.yaml deleted file mode 100644 index 7e6274a..0000000 --- a/schemas/4.5.0/Message.yaml +++ /dev/null @@ -1,78 +0,0 @@ -Message: - extends: - - Interval - - Folder - - PlainText - - HyperText - label: Message - plural: Messages - matchable: false - generated: true - featured: - - subject - - date - - sender - - recipients - required: - - bodyText - - sender - caption: - - subject - - title - - threadTopic - - fileName - temporalExtent: - start: - - date - - authoredAt - - publishedAt - properties: - subject: - label: Subject - type: string - threadTopic: - label: Thread topic - type: string - sender: - label: "Sender" - type: entity - range: LegalEntity - reverse: - name: messagesSent - label: "Messages sent" - senderAccount: - label: "Sender Account" - type: entity - range: UserAccount - reverse: - name: messagesSent - label: "Messages sent" - recipients: - label: "Recipients" - type: entity - range: LegalEntity - reverse: - name: messagesReceived - label: "Messages received" - recipientAccount: - label: "Recipient Account" - type: entity - range: UserAccount - reverse: - name: messagesReceived - label: "Messages received" - inReplyTo: - label: "In Reply To" - description: "Message ID of the preceding message in the thread" - hidden: true - inReplyToMessage: - label: Responding to - type: entity - range: Message - reverse: - name: responses - label: "Responses" - metadata: - label: "Metadata" - hidden: true - type: json diff --git a/schemas/4.5.0/Note.yaml b/schemas/4.5.0/Note.yaml deleted file mode 100644 index 986a42f..0000000 --- a/schemas/4.5.0/Note.yaml +++ /dev/null @@ -1,23 +0,0 @@ -Note: - extends: - - Thing - - Analyzable - label: Note - plural: Notes - description: > - An annotation that applies to a document or entity. - matchable: false - # generated: true - featured: - - description - - entity - caption: - - description - properties: - entity: - label: "Entity" - type: entity - range: Thing - reverse: - name: noteEntities - label: "Notes" diff --git a/schemas/4.5.0/Occupancy.yaml b/schemas/4.5.0/Occupancy.yaml deleted file mode 100644 index bc95e15..0000000 --- a/schemas/4.5.0/Occupancy.yaml +++ /dev/null @@ -1,51 +0,0 @@ -Occupancy: - label: "Occupancy" - plural: "Occupancies" - extends: - - Interval - matchable: false - description: > - The occupation of a position by a person for a specific period of time. - featured: - - holder - - post - required: - - holder - - post - edge: - source: holder - label: holds - target: post - directed: true - caption: - - startDate - - endDate - temporalExtent: - start: - - startDate - - declarationDate - - date - end: - - endDate - properties: - holder: - label: "Holder" - reverse: - name: positionOccupancies - label: "Positions held" - type: entity - range: Person - post: - label: "Position occupied" - reverse: - name: occupancies - label: "Position holders" - type: entity - range: Position - declarationDate: - label: "Declaration date" - type: date - matchable: false - status: - label: "Status" - type: string diff --git a/schemas/4.5.0/Organization.yaml b/schemas/4.5.0/Organization.yaml deleted file mode 100644 index 944ca4e..0000000 --- a/schemas/4.5.0/Organization.yaml +++ /dev/null @@ -1,46 +0,0 @@ -Organization: - extends: - - LegalEntity - label: Organization - plural: Organizations - description: > - Any type of incorporated entity that cannot be owned by another (see Company). This - might include charities, foundations or state-owned enterprises, depending on their - jurisdiction. - matchable: true - featured: - - name - - country - - legalForm - - status - required: - - name - caption: - - name - - alias - - abbreviation - - weakAlias - - previousName - - registrationNumber - properties: - cageCode: - label: CAGE - description: Commercial and Government Entity Code (CAGE) - type: identifier - maxLength: 16 - permId: - label: PermID - description: LSEG/Refinitiv code for a company - type: identifier - maxLength: 16 - imoNumber: - label: IMO Number - type: identifier - format: imo - maxLength: 16 - giiNumber: - # cf. https://www.irs.gov/businesses/corporations/fatca-registration-and-ffi-list-giin-composition-information - label: GIIN - description: Global Intermediary Identification Number - type: identifier - maxLength: 20 diff --git a/schemas/4.5.0/Ownership.yaml b/schemas/4.5.0/Ownership.yaml deleted file mode 100644 index 951dc56..0000000 --- a/schemas/4.5.0/Ownership.yaml +++ /dev/null @@ -1,52 +0,0 @@ -Ownership: - label: "Ownership" - plural: "Ownerships" - extends: - - Interest - matchable: false - featured: - - owner - - asset - - percentage - - startDate - - endDate - required: - - owner - - asset - edge: # OWNER owns ASSET - source: owner - label: "owns" - target: asset - directed: true - caption: - - percentage - properties: - owner: - label: "Owner" - reverse: - name: ownershipOwner - label: "Assets and shares" - type: entity - range: LegalEntity - asset: - label: "Asset" - reverse: - name: ownershipAsset - label: "Owners" - type: entity - range: Asset - percentage: - label: "Percentage held" - sharesCount: - label: "Number of shares" - sharesValue: - label: "Value of shares" - sharesCurrency: - label: "Currency of shares" - sharesType: - label: "Type of shares" - legalBasis: - label: "Legal basis" - ownershipType: - label: "Type of ownership" - # e.g. "beneficial", "direct", "indirect", "ultimate" diff --git a/schemas/4.5.0/Package.yaml b/schemas/4.5.0/Package.yaml deleted file mode 100644 index b6a6fb4..0000000 --- a/schemas/4.5.0/Package.yaml +++ /dev/null @@ -1,17 +0,0 @@ -Package: - extends: - - Folder - label: Package - plural: Packages - description: > - A bundle of files that have been packaged together into some form of archive. - matchable: false - generated: true - featured: - - title - - fileName - - mimeType - - parent - caption: - - fileName - - title diff --git a/schemas/4.5.0/Page.yaml b/schemas/4.5.0/Page.yaml deleted file mode 100644 index bda3ca8..0000000 --- a/schemas/4.5.0/Page.yaml +++ /dev/null @@ -1,42 +0,0 @@ -Page: - # Be careful: Not derived from anything! - label: Page - plural: Pages - matchable: false - generated: true - hidden: true - properties: - index: - label: "Index" - type: number - bodyText: - label: "Text" - hidden: true - type: text - document: - label: "Document" - type: entity - range: Pages - reverse: - name: pages - label: "Pages" - hidden: true - detectedLanguage: - label: "Detected language" - type: language - hidden: true - translatedText: - label: "Translated version of the body text" - hidden: true - type: text - translatedTextLanguage: - label: "The language of the translated text" - hidden: true - indexText: - # This is a leaked abstraction from aleph. The idea is to have some - # additional text field that can be used to associate searchable text - # with an entity. This will be removed as a property upon indexing so - # that it can never be retrieved. - label: Index text - hidden: true - type: text diff --git a/schemas/4.5.0/Pages.yaml b/schemas/4.5.0/Pages.yaml deleted file mode 100644 index a161ae9..0000000 --- a/schemas/4.5.0/Pages.yaml +++ /dev/null @@ -1,23 +0,0 @@ -Pages: - extends: - - Document - label: Document - description: > - A multi-page document, such as a PDF or Word file or slide-show presentation. - plural: Documents - matchable: false - generated: true - featured: - - title - - fileName - - mimeType - - parent - caption: - - fileName - - title - properties: - pdfHash: - label: "PDF alternative version checksum" - hidden: true - type: checksum - matchable: false diff --git a/schemas/4.5.0/Passport.yaml b/schemas/4.5.0/Passport.yaml deleted file mode 100644 index f1e163d..0000000 --- a/schemas/4.5.0/Passport.yaml +++ /dev/null @@ -1,42 +0,0 @@ -Passport: - label: "Passport" - plural: "Passports" - description: > - An passport held by a person. - extends: - - Identification - matchable: false - featured: - - number - - country - - type - - holder - - startDate - - endDate - required: - - holder - - number - caption: - - passportNumber - - number - properties: - passportNumber: - # FIXME: Use `number` from `Identification` instead!! - label: "Passport number" - type: identifier - hidden: true - surname: - label: "Surname" - givenName: - label: "Given name" - birthDate: - label: "Birth date" - type: date - birthPlace: - label: "Place of birth" - gender: - label: "Gender" - type: gender - personalNumber: - label: "Personal number" - type: identifier diff --git a/schemas/4.5.0/Payment.yaml b/schemas/4.5.0/Payment.yaml deleted file mode 100644 index 3b3fbfc..0000000 --- a/schemas/4.5.0/Payment.yaml +++ /dev/null @@ -1,81 +0,0 @@ -Payment: - label: "Payment" - plural: "Payments" - description: "A monetary payment between two parties." - matchable: false - extends: - - Interval - - Value - featured: - - payer - - beneficiary - - date - - amount - - purpose - required: - - payer - - beneficiary - caption: - - amount - edge: - source: payer - label: "paid" - target: beneficiary - directed: true - caption: - - amount - - date - - purpose - properties: - sequenceNumber: - label: "Sequence number" - transactionNumber: - label: "Transaction number" - purpose: - label: "Payment purpose" - type: text - programme: - label: "Payment programme" - description: "Programme name, funding code, category identifier, etc." - payer: - label: "Payer" - reverse: - name: paymentPayer - label: "Payments made" - type: entity - range: LegalEntity - payerAccount: - label: "Payer bank account" - reverse: - name: paymentPayerAccount - label: "Payments made" - type: entity - range: BankAccount - beneficiary: - label: "Beneficiary" - reverse: - name: paymentBeneficiary - label: "Payments received" - type: entity - range: LegalEntity - beneficiaryAccount: - label: "Beneficiary bank account" - reverse: - name: paymentBeneficiaryAccount - label: "Payments received" - type: entity - range: BankAccount - contract: - label: "Contract" - reverse: - name: paymentContract - label: "Contractual payments" - type: entity - range: Contract - project: - label: "Project" - reverse: - name: payments - label: "Payments" - type: entity - range: Project diff --git a/schemas/4.5.0/Person.yaml b/schemas/4.5.0/Person.yaml deleted file mode 100644 index f2e11b7..0000000 --- a/schemas/4.5.0/Person.yaml +++ /dev/null @@ -1,112 +0,0 @@ -Person: - extends: - - LegalEntity - label: Person - plural: People - description: > - A natural person, as opposed to a corporation of some type. - matchable: true - featured: - - name - - nationality - - birthDate - required: - - name - caption: - - name - - alias - - previousName - - weakAlias - - abbreviation - - lastName - - email - - phone - temporalExtent: - start: - - birthDate - end: - - deathDate - properties: - title: - label: Title - # The `firstName`, `lastName`, `secondName` etc. properties intentionally do not use - # the `name` property type. Many FtM tools (including Aleph) use name properties to - # compare/match entities, but matching entites just on e.g. a first name would lead to - # too many false positives. - firstName: - label: First name - description: "The part of a name that indicates the person, also often called given name or forename" - secondName: - label: Second name - description: "Deprecated, use one of the other more specific name properties instead." - deprecated: true - middleName: - label: Middle name - description: "The part of name written between a person's given name and family name. Often abbreviated as a middle initial." - fatherName: - label: Patronymic - description: "The part of a name based on the given name of one's father" - motherName: - label: Matronymic - description: "The part of a name based on the given name of one's mother" - lastName: - label: Last name - description: "The part of a name that indicates one's family, also often called surname or family name" - nameSuffix: - label: Name suffix - birthDate: - label: Birth date - type: date - birthPlace: - label: Place of birth - birthCountry: - label: Country of birth - type: country - deathDate: - label: Death date - type: date - position: - label: Position - matchable: false - nationality: - label: Nationality - type: country - citizenship: - label: Citizenship - type: country - passportNumber: - label: Passport number - type: identifier - # Awkward data section below - socialSecurityNumber: - label: Social security number - type: identifier - format: ssn - gender: - label: Gender - type: gender - ethnicity: - label: Ethnicity - height: - label: Height - type: number - weight: - label: Weight - type: number - eyeColor: - label: Eye color - hairColor: - label: Hair color - appearance: - label: Physical appearance - religion: - label: Religion - political: - label: Political association - profession: - label: Profession - education: - label: Education - spokenLanguage: - label: Spoken language - type: language diff --git a/schemas/4.5.0/PlainText.yaml b/schemas/4.5.0/PlainText.yaml deleted file mode 100644 index 7899061..0000000 --- a/schemas/4.5.0/PlainText.yaml +++ /dev/null @@ -1,17 +0,0 @@ -PlainText: - extends: - - Document - label: Text file - plural: Text files - description: > - Text files, like .txt or source code. - matchable: false - generated: true - featured: - - title - - fileName - - mimeType - - parent - caption: - - fileName - - title diff --git a/schemas/4.5.0/Position.yaml b/schemas/4.5.0/Position.yaml deleted file mode 100644 index 7d1f018..0000000 --- a/schemas/4.5.0/Position.yaml +++ /dev/null @@ -1,50 +0,0 @@ -Position: - label: "Position" - plural: "Positions" - extends: - - Thing - matchable: true - # cf. https://www.popoloproject.com/specs/post.html - description: > - A post, role or position within an organization or body. - This describes a position one or more people may occupy - and not the occupation of the post by a specific individual at a - specific point in time. - - 'subnationalArea' should be used to further restrict the scope of the - position. It should not simply represent some regional aspect of the - role - e.g. the constituency of a national member of parliament - when - their legislative jurisdiction is nationwide. - featured: - - name - - country - - subnationalArea - caption: - - name - required: - - name - temporalExtent: - start: - - inceptionDate - end: - - dissolutionDate - properties: - organization: - label: "Organization" - type: entity - reverse: - name: positions - label: Positions - range: Organization - inceptionDate: - label: Inception date - type: date - dissolutionDate: - label: Dissolution date - type: date - subnationalArea: - label: Subnational jurisdiction name or code - type: string - numberOfSeats: - label: Total number of seats - type: number diff --git a/schemas/4.5.0/Project.yaml b/schemas/4.5.0/Project.yaml deleted file mode 100644 index 4fa77a9..0000000 --- a/schemas/4.5.0/Project.yaml +++ /dev/null @@ -1,27 +0,0 @@ -Project: - label: Project - plural: Projects - extends: - - Interval - - Thing - - Value - description: > - An activity carried out by a group of participants. - matchable: false - featured: - - name - - projectId - - startDate - caption: - - name - - projectId - properties: - projectId: - label: "Project ID" - type: identifier - status: - label: "Status" - phase: - label: "Phase" - goal: - label: "Project goal" diff --git a/schemas/4.5.0/ProjectParticipant.yaml b/schemas/4.5.0/ProjectParticipant.yaml deleted file mode 100644 index d4e0ae2..0000000 --- a/schemas/4.5.0/ProjectParticipant.yaml +++ /dev/null @@ -1,36 +0,0 @@ -ProjectParticipant: - label: Project participant - plural: Project participants - extends: - - Interest - description: > - An activity carried out by a group of participants. - matchable: false - featured: - - project - - participant - - role - caption: - - role - edge: - source: participant - label: "participates in" - target: project - directed: true - caption: - - role - properties: - project: - label: "Project" - type: entity - range: Project - reverse: - name: participants - label: "Participants" - participant: - label: "Participant" - type: entity - range: LegalEntity - reverse: - name: projectParticipation - label: "Projects" diff --git a/schemas/4.5.0/PublicBody.yaml b/schemas/4.5.0/PublicBody.yaml deleted file mode 100644 index b7d4c41..0000000 --- a/schemas/4.5.0/PublicBody.yaml +++ /dev/null @@ -1,21 +0,0 @@ -PublicBody: - label: Public body - plural: Public bodies - description: > - A public body, such as a ministry, department or state company. - extends: - - Organization - matchable: true - featured: - - name - - country - - legalForm - - status - caption: - - name - - alias - - abbreviation - - weakAlias - - previousName - required: - - name diff --git a/schemas/4.5.0/RealEstate.yaml b/schemas/4.5.0/RealEstate.yaml deleted file mode 100644 index a40c778..0000000 --- a/schemas/4.5.0/RealEstate.yaml +++ /dev/null @@ -1,59 +0,0 @@ -RealEstate: - extends: - - Asset - label: Real estate - plural: Real estates - description: "A piece of land or property." - matchable: false - featured: - - registrationNumber - - address - - country - caption: - - name - - address - - registrationNumber - properties: - latitude: - label: Latitude - type: number - longitude: - label: Longitude - type: number - censusBlock: - label: Census block - cadastralCode: - label: Cadastral code - type: identifier - area: - label: Area - type: number - registrationNumber: - label: Registration number - type: identifier - titleNumber: - label: Title number - type: identifier - tenure: - label: Tenure - encumbrance: - label: Encumbrance - description: > - An encumbrance is a right to, interest in, or legal liability on real - property that does not prohibit passing title to the property but that - diminishes its value. - propertyType: - label: Property type - landType: - label: Land type - createDate: - label: Record date - type: date - parent: - label: "Parent unit" - description: "If this entity is a subunit, another entity (real estate) is its parent" - reverse: - label: "Subunits" - name: subunits - type: entity - range: RealEstate diff --git a/schemas/4.5.0/Representation.yaml b/schemas/4.5.0/Representation.yaml deleted file mode 100644 index 11535ec..0000000 --- a/schemas/4.5.0/Representation.yaml +++ /dev/null @@ -1,36 +0,0 @@ -Representation: - label: "Representation" - plural: "Representations" - description: "A mediatory, intermediary, middleman, or broker acting on behalf of a legal entity." - extends: - - Interest - matchable: false - featured: - - agent - - client - - role - required: - - agent - - client - edge: # AGENT represents CLIENT - source: agent - label: "represents" - target: client - directed: true - caption: - - role - properties: - agent: # aka representative / incorporation agent - label: "Agent" - type: entity - range: LegalEntity - reverse: - name: agencyClient - label: "Clients" - client: - label: "Client" - type: entity - range: LegalEntity - reverse: - name: agentRepresentation - label: "Agents" diff --git a/schemas/4.5.0/Risk.yaml b/schemas/4.5.0/Risk.yaml deleted file mode 100644 index d9e771e..0000000 --- a/schemas/4.5.0/Risk.yaml +++ /dev/null @@ -1,43 +0,0 @@ -Risk: - label: Risk - plural: Risks - description: "A risk associated with an entity" - extends: - - Interval - matchable: false - featured: - - entity - - country - - reason - - status - - startDate - required: - - entity - caption: - - reason - - status - properties: - entity: - label: "Entity" - reverse: - name: risks - label: "Risks" - type: entity - range: Thing - topics: - label: Topics - type: topic - status: - label: "Status" - duration: - label: "Duration" - type: number - reason: - label: "Reason" - type: text - country: - label: "Country" - type: country - listingDate: - label: "Listing date" - type: date diff --git a/schemas/4.5.0/Sanction.yaml b/schemas/4.5.0/Sanction.yaml deleted file mode 100644 index 189afa2..0000000 --- a/schemas/4.5.0/Sanction.yaml +++ /dev/null @@ -1,61 +0,0 @@ -Sanction: - label: Sanction - plural: Sanctions - description: "A sanction designation" - extends: - - Interval - matchable: false - featured: - - entity - - country - - authority - - program - - startDate - required: - - entity - caption: - - program - properties: - entity: - label: "Entity" - reverse: - name: sanctions - label: "Sanctions" - type: entity - range: Thing - authority: - label: "Authority" - authorityId: - label: "Authority-issued identifier" - type: identifier - unscId: - label: "UN SC identifier" - type: identifier - maxLength: 16 - program: - label: "Program" - programId: - # This is a unique identifier for the program issued by OpenSanctions, but - # could also be used for authority-issued IDs in other usage scenarios. - label: "Program ID" - type: identifier - maxLength: 64 - programUrl: - label: "Program URL" - type: url - provisions: - label: "Scope of sanctions" - status: - label: "Status" - duration: - label: "Duration" - type: number - reason: - label: "Reason" - type: text - country: - label: "Country" - type: country - listingDate: - label: "Listing date" - type: date diff --git a/schemas/4.5.0/Security.yaml b/schemas/4.5.0/Security.yaml deleted file mode 100644 index 730b276..0000000 --- a/schemas/4.5.0/Security.yaml +++ /dev/null @@ -1,59 +0,0 @@ -Security: - extends: - - Asset - label: Security - plural: Securities - description: "A tradeable financial asset." - matchable: true - featured: - - isin - - name - - issuer - - country - caption: - - name - - isin - - registrationNumber - temporalExtent: - start: - - issueDate - end: - - maturityDate - properties: - isin: - label: ISIN - description: International Securities Identification Number - type: identifier - format: isin - maxLength: 16 - registrationNumber: - label: Registration number - type: identifier - ticker: - label: Stock ticker symbol - type: identifier - figiCode: - label: Financial Instrument Global Identifier - type: identifier - format: figi - maxLength: 16 - issuer: - label: "Issuer" - type: entity - range: LegalEntity - # FIXME: Should this be `Organization`? - reverse: - label: "Issued securities" - name: securities - issueDate: - label: Date issued - type: date - maturityDate: - label: Maturity date - type: date - type: - label: Type - classification: - label: Classification - collateral: - label: Collateral diff --git a/schemas/4.5.0/Similar.yaml b/schemas/4.5.0/Similar.yaml deleted file mode 100644 index c0de910..0000000 --- a/schemas/4.5.0/Similar.yaml +++ /dev/null @@ -1,37 +0,0 @@ -Similar: - label: Similar - plural: Similar entities - description: > - A link between two entities that are presumed to be the same, e.g. as the - outcome of a probabilistic record linkage process. - matchable: false - generated: true - featured: - - candidate - - match - - confidenceScore - caption: - - confidenceScore - - criteria - properties: - candidate: - label: "Candidate" - type: entity - range: Thing - reverse: - name: candidateSimilars - label: "Similar to this" - match: - label: "Match" - type: entity - range: Thing - reverse: - name: matchSimilars - label: "Similar as this" - confidenceScore: - label: Confidence score - type: number - criteria: - label: Matching criteria - matcher: - label: Matcher diff --git a/schemas/4.5.0/Succession.yaml b/schemas/4.5.0/Succession.yaml deleted file mode 100644 index 59716e7..0000000 --- a/schemas/4.5.0/Succession.yaml +++ /dev/null @@ -1,36 +0,0 @@ -Succession: - label: "Succession" - plural: "Successions" - description: "Two entities that legally succeed each other." - extends: - - Interest - matchable: false - featured: - - predecessor - - successor - - date - required: - - predecessor - - successor - edge: # PREDECESSOR preceeds SUCCESSOR - source: predecessor - label: "preceeds" - target: successor - directed: true - caption: - - date - properties: - predecessor: - label: "Predecessor" - type: entity - range: LegalEntity - reverse: - name: successors - label: "Successors" - successor: - label: "Successor" - type: entity - range: LegalEntity - reverse: - name: predecessors - label: "Predecessors" diff --git a/schemas/4.5.0/Table.yaml b/schemas/4.5.0/Table.yaml deleted file mode 100644 index 125c394..0000000 --- a/schemas/4.5.0/Table.yaml +++ /dev/null @@ -1,32 +0,0 @@ -Table: - extends: - - Document - label: Table - plural: Tables - description: > - A document structured into rows and cells. This includes simple CSV files, spreadsheet - sheets or database relations. - matchable: false - generated: true - featured: - - title - - fileName - - mimeType - - parent - caption: - - title - - name - - fileName - properties: - columns: - label: "Column headings" - hidden: true - type: json - rowCount: - label: "Number of rows" - type: number - csvHash: - label: "CSV alternative version checksum" - hidden: true - type: checksum - matchable: false diff --git a/schemas/4.5.0/TaxRoll.yaml b/schemas/4.5.0/TaxRoll.yaml deleted file mode 100644 index 406a5c6..0000000 --- a/schemas/4.5.0/TaxRoll.yaml +++ /dev/null @@ -1,40 +0,0 @@ -TaxRoll: - label: "Tax roll" - plural: "Tax rolls" - description: "A tax declaration of an individual" - extends: - - Interval - icon: fa-bank - matchable: false - featured: - - taxee - - date - - income - - wealth - - taxPaid - required: - - taxee - properties: - taxee: - label: "Taxee" - type: entity - range: LegalEntity - reverse: - name: taxRolls - label: "Tax rolls" - country: - label: "Country" - type: country - surname: - label: "Surname" - givenName: - label: "Given name" - birthDate: - label: "Birth date" - type: date - income: - label: "Registered income" - taxPaid: - label: "Amount of tax paid" - wealth: - label: "Registered wealth" diff --git a/schemas/4.5.0/Thing.yaml b/schemas/4.5.0/Thing.yaml deleted file mode 100644 index 10880a5..0000000 --- a/schemas/4.5.0/Thing.yaml +++ /dev/null @@ -1,116 +0,0 @@ -Thing: - # Kein Ding, digga, das Ding hat swing. - # Root type of all entities that should be rendered in Aleph. - abstract: true - matchable: false - featured: - - name - - country - required: - - name - caption: - - name - properties: - name: - label: Name - type: name - summary: # a short one-liner kind of description - label: Summary - type: text - description: # a longer description - label: Description - type: text - country: - label: Country - type: country - alias: - label: Alias - type: name - previousName: - label: Previous name - type: name - weakAlias: - label: Weak alias - type: name - description: "A relatively broad or generic alias that should not be used for matching in screening systems. It may still may be useful for identification purposes, particularly in confirming a possible match triggered by other identifier information." - matchable: false - sourceUrl: - label: Source link - type: url - matchable: false - publisher: - label: "Publishing source" - matchable: false - publisherUrl: - label: "Publishing source URL" - type: url - matchable: false - alephUrl: - label: Aleph URL - type: url - hidden: true - matchable: false - wikipediaUrl: - label: Wikipedia Article - type: url - wikidataId: - label: Wikidata ID - type: identifier - format: wikidata - maxLength: 32 - keywords: - label: Keywords - topics: - label: Topics - type: topic - address: - label: Address - type: address - addressEntity: - label: Address - reverse: - name: things - label: "Located there" - type: entity - range: Address - program: # Used by sanctions - label: Program - description: Regulatory program or sanctions list on which an entity is listed. - programId: - # This is a unique identifier for the program issued by OpenSanctions, but - # could also be used for authority-issued IDs in other usage scenarios. - label: "Program ID" - type: identifier - maxLength: 64 - hidden: true - matchable: false - notes: - label: Notes - type: text - proof: - label: Source document - reverse: - name: proven - label: "Derived entities" - type: entity - range: Document - indexText: - # This is a leaked abstraction from aleph. The idea is to have some - # additional text field that can be used to associate searchable text - # with an entity. This will be removed as a property upon indexing so - # that it can never be retrieved. - label: Index text - hidden: true - type: text - createdAt: - label: "Created at" - type: date - matchable: false - modifiedAt: - label: "Modified on" - type: date - matchable: false - retrievedAt: - label: "Retrieved on" - type: date - matchable: false diff --git a/schemas/4.5.0/Trip.yaml b/schemas/4.5.0/Trip.yaml deleted file mode 100644 index 33c41db..0000000 --- a/schemas/4.5.0/Trip.yaml +++ /dev/null @@ -1,42 +0,0 @@ -Trip: - label: "Trip" - plural: "Trips" - extends: - - Event - matchable: false - caption: - - name - - startDate - - endDate - required: - - name - - endLocation - - startLocation - featured: - - endLocation - - startLocation - - vehicle - - startDate - - endDate - properties: - startLocation: - label: "Start location" - type: entity - range: Address - reverse: - name: tripsDeparting - label: "Trips departing" - endLocation: - label: "End location" - type: entity - range: Address - reverse: - name: tripsIncoming - label: "Trips incoming" - vehicle: - label: "Vehicle" - type: entity - range: Vehicle - reverse: - name: tripsInvolved - label: "Trips" diff --git a/schemas/4.5.0/UnknownLink.yaml b/schemas/4.5.0/UnknownLink.yaml deleted file mode 100644 index 2dcd402..0000000 --- a/schemas/4.5.0/UnknownLink.yaml +++ /dev/null @@ -1,36 +0,0 @@ -# Two entities are connected but the nature of the connection is tbd -UnknownLink: - label: "Other link" - plural: "Other links" - extends: - - Interest - matchable: false - featured: - - subject - - object - - role - required: - - subject - - object - edge: - source: subject - label: "linked to" - target: object - directed: false - caption: - - role - properties: - subject: - label: "Subject" - reverse: - name: unknownLinkTo - label: "Linked to" - type: entity - range: Thing - object: - label: "Object" - reverse: - name: unknownLinkFrom - label: "Linked from" - type: entity - range: Thing diff --git a/schemas/4.5.0/UserAccount.yaml b/schemas/4.5.0/UserAccount.yaml deleted file mode 100644 index 6d5f8e9..0000000 --- a/schemas/4.5.0/UserAccount.yaml +++ /dev/null @@ -1,47 +0,0 @@ -UserAccount: - extends: - - Thing - label: "User account" - plural: "User accounts" - matchable: true - generated: true - featured: - - username - - service - - email - - owner - required: - - username - caption: - - username - - email - - service - properties: - owner: - label: "Owner" - type: entity - range: LegalEntity - reverse: - name: userAccounts - label: "User accounts" - service: - label: "Service" - type: string - email: - label: E-Mail - type: email - description: "Email address" - phone: - label: Phone - type: phone - description: "Phone number" - maxLength: 32 - username: - label: "Username" - type: string - password: - label: "Password" - type: string - ipAddress: - label: "IP address" - type: ip diff --git a/schemas/4.5.0/Value.yaml b/schemas/4.5.0/Value.yaml deleted file mode 100644 index 74d6646..0000000 --- a/schemas/4.5.0/Value.yaml +++ /dev/null @@ -1,17 +0,0 @@ -Value: - label: "Value" - plural: "Values" - abstract: true - matchable: false - properties: - amount: - label: "Amount" - type: number - currency: - label: "Currency" - amountUsd: - label: "Amount in USD" - type: number - amountEur: - label: "Amount in EUR" - type: number diff --git a/schemas/4.5.0/Vehicle.yaml b/schemas/4.5.0/Vehicle.yaml deleted file mode 100644 index 3c5ec80..0000000 --- a/schemas/4.5.0/Vehicle.yaml +++ /dev/null @@ -1,54 +0,0 @@ -Vehicle: - label: Vehicle - plural: Vehicles - extends: - - Asset - matchable: false - featured: - - type - - name - - registrationNumber - - country - - owner - caption: - - name - - registrationNumber - temporalExtent: - start: - - buildDate - - registrationDate - end: - - deregistrationDate - properties: - registrationNumber: - label: Registration number - type: identifier - type: - label: Type - model: - label: Model - owner: - # Use `Ownership` link instead. - deprecated: true - label: Owner - type: entity - range: LegalEntity - reverse: - name: ownedVehicles - label: "Vehicles owned" - operator: - label: Operator - type: entity - range: LegalEntity - reverse: - name: operatedVehicles - label: "Vehicles operated" - buildDate: - label: Build Date - type: date - registrationDate: - label: Registration Date - type: date - deregistrationDate: - label: De-registration Date - type: date diff --git a/schemas/4.5.0/Vessel.yaml b/schemas/4.5.0/Vessel.yaml deleted file mode 100644 index f1316cd..0000000 --- a/schemas/4.5.0/Vessel.yaml +++ /dev/null @@ -1,60 +0,0 @@ -Vessel: - label: Vessel - plural: Vessels - description: > - A boat or ship. Typically flying some sort of national flag. - extends: - - Vehicle - matchable: true - featured: - - name - - imoNumber - - type - - flag - required: - - name - caption: - - name - - imoNumber - properties: - imoNumber: - label: IMO Number - type: identifier - format: imo - maxLength: 16 - crsNumber: - label: CRS Number - type: identifier - flag: - label: Flag - type: country - registrationPort: - label: Port of Registration - navigationArea: - label: Navigation Area - tonnage: - label: Tonnage - type: number - grossRegisteredTonnage: - label: Gross Registered Tonnage - type: number - deadweightTonnage: - label: Deadweight Tonnage - type: number - nameChangeDate: - label: Date of Name Change - type: date - callSign: - label: Call Sign - type: identifier - pastFlags: - label: Past Flags - type: country - pastTypes: - label: Past Types - #buildDate: - # label: Build Date - mmsi: - label: MMSI - type: identifier - maxLength: 16 diff --git a/schemas/4.5.0/Video.yaml b/schemas/4.5.0/Video.yaml deleted file mode 100644 index e63d60d..0000000 --- a/schemas/4.5.0/Video.yaml +++ /dev/null @@ -1,20 +0,0 @@ -Video: - extends: - - Document - label: Video - plural: Videos - matchable: false - generated: true - featured: - - title - - fileName - - mimeType - - parent - caption: - - fileName - - title - properties: - duration: - label: "Duration" - description: "Duration of the video in ms" - type: number diff --git a/schemas/4.5.0/Workbook.yaml b/schemas/4.5.0/Workbook.yaml deleted file mode 100644 index d3001ad..0000000 --- a/schemas/4.5.0/Workbook.yaml +++ /dev/null @@ -1,18 +0,0 @@ -Workbook: - extends: - - Folder - label: Workbook - plural: Workbooks - description: > - A spreadsheet document, for example from Excel. Each spreadsheet contains a set - of sheets that hold actual data. - matchable: false - generated: true - featured: - - title - - fileName - # - mimeType - - parent - caption: - - fileName - - title From 68afeec7e1926de403a457efa8ab3c59fd79743f Mon Sep 17 00:00:00 2001 From: Christian Stefanescu Date: Mon, 9 Mar 2026 19:41:44 +0100 Subject: [PATCH 4/4] cargo fmt --- src/generated/ftm_entity.rs | 38 +++++++++++++------------------------ 1 file changed, 13 insertions(+), 25 deletions(-) diff --git a/src/generated/ftm_entity.rs b/src/generated/ftm_entity.rs index 434b1c2..76eaf56 100644 --- a/src/generated/ftm_entity.rs +++ b/src/generated/ftm_entity.rs @@ -248,37 +248,25 @@ impl FtmEntity { "Audio" => Ok(FtmEntity::Audio(serde_json::from_value(value)?)), "BankAccount" => Ok(FtmEntity::BankAccount(serde_json::from_value(value)?)), "Call" => Ok(FtmEntity::Call(serde_json::from_value(value)?)), - "CallForTenders" => { - Ok(FtmEntity::CallForTenders(serde_json::from_value(value)?)) - } + "CallForTenders" => Ok(FtmEntity::CallForTenders(serde_json::from_value(value)?)), "Company" => Ok(FtmEntity::Company(serde_json::from_value(value)?)), "Contract" => Ok(FtmEntity::Contract(serde_json::from_value(value)?)), - "ContractAward" => { - Ok(FtmEntity::ContractAward(serde_json::from_value(value)?)) - } + "ContractAward" => Ok(FtmEntity::ContractAward(serde_json::from_value(value)?)), "CourtCase" => Ok(FtmEntity::CourtCase(serde_json::from_value(value)?)), - "CourtCaseParty" => { - Ok(FtmEntity::CourtCaseParty(serde_json::from_value(value)?)) - } + "CourtCaseParty" => Ok(FtmEntity::CourtCaseParty(serde_json::from_value(value)?)), "CryptoWallet" => Ok(FtmEntity::CryptoWallet(serde_json::from_value(value)?)), "Debt" => Ok(FtmEntity::Debt(serde_json::from_value(value)?)), "Directorship" => Ok(FtmEntity::Directorship(serde_json::from_value(value)?)), "Document" => Ok(FtmEntity::Document(serde_json::from_value(value)?)), - "Documentation" => { - Ok(FtmEntity::Documentation(serde_json::from_value(value)?)) - } - "EconomicActivity" => { - Ok(FtmEntity::EconomicActivity(serde_json::from_value(value)?)) - } + "Documentation" => Ok(FtmEntity::Documentation(serde_json::from_value(value)?)), + "EconomicActivity" => Ok(FtmEntity::EconomicActivity(serde_json::from_value(value)?)), "Email" => Ok(FtmEntity::Email(serde_json::from_value(value)?)), "Employment" => Ok(FtmEntity::Employment(serde_json::from_value(value)?)), "Event" => Ok(FtmEntity::Event(serde_json::from_value(value)?)), "Family" => Ok(FtmEntity::Family(serde_json::from_value(value)?)), "Folder" => Ok(FtmEntity::Folder(serde_json::from_value(value)?)), "HyperText" => Ok(FtmEntity::HyperText(serde_json::from_value(value)?)), - "Identification" => { - Ok(FtmEntity::Identification(serde_json::from_value(value)?)) - } + "Identification" => Ok(FtmEntity::Identification(serde_json::from_value(value)?)), "Image" => Ok(FtmEntity::Image(serde_json::from_value(value)?)), "LegalEntity" => Ok(FtmEntity::LegalEntity(serde_json::from_value(value)?)), "License" => Ok(FtmEntity::License(serde_json::from_value(value)?)), @@ -298,14 +286,12 @@ impl FtmEntity { "PlainText" => Ok(FtmEntity::PlainText(serde_json::from_value(value)?)), "Position" => Ok(FtmEntity::Position(serde_json::from_value(value)?)), "Project" => Ok(FtmEntity::Project(serde_json::from_value(value)?)), - "ProjectParticipant" => { - Ok(FtmEntity::ProjectParticipant(serde_json::from_value(value)?)) - } + "ProjectParticipant" => Ok(FtmEntity::ProjectParticipant(serde_json::from_value( + value, + )?)), "PublicBody" => Ok(FtmEntity::PublicBody(serde_json::from_value(value)?)), "RealEstate" => Ok(FtmEntity::RealEstate(serde_json::from_value(value)?)), - "Representation" => { - Ok(FtmEntity::Representation(serde_json::from_value(value)?)) - } + "Representation" => Ok(FtmEntity::Representation(serde_json::from_value(value)?)), "Risk" => Ok(FtmEntity::Risk(serde_json::from_value(value)?)), "Sanction" => Ok(FtmEntity::Sanction(serde_json::from_value(value)?)), "Security" => Ok(FtmEntity::Security(serde_json::from_value(value)?)), @@ -320,7 +306,9 @@ impl FtmEntity { "Vessel" => Ok(FtmEntity::Vessel(serde_json::from_value(value)?)), "Video" => Ok(FtmEntity::Video(serde_json::from_value(value)?)), "Workbook" => Ok(FtmEntity::Workbook(serde_json::from_value(value)?)), - _ => Err(serde::de::Error::custom(format!("unknown FTM schema: {schema:?}"))), + _ => Err(serde::de::Error::custom(format!( + "unknown FTM schema: {schema:?}" + ))), } } /// Serialize to standard FTM nested JSON format