]> Lady’s Gitweb - Vocab/commitdiff
Initial commit; initial set of vocabs live
authorLady <redacted>
Sun, 8 Sep 2024 02:08:13 +0000 (22:08 -0400)
committerLady <redacted>
Sun, 8 Sep 2024 02:25:25 +0000 (22:25 -0400)
Things which still need to be done with what is here :—

- Domains and ranges should be inferred, but aren¦t currently.

- Many terms involve more axioms than they need stricty need to,
  because they were written before the generated webpage supported
  basic inferencing.

- Better handling/display of term statuses??

- Honestly, everything probably deserves another close review just for
  accuracy.

Planned future work :—

- Support for profiles (i·e, subsets of the ontology with additional
  constraints).

- A lot more terms in the `ladys:` name·space.

414 files changed:
.gitignore [new file with mode: 0644]
.gitmodules [new file with mode: 0644]
.libxml2 [new submodule]
\9b©ð\9f\93° [new submodule]
\9f\91¥ð\9f\93¤ [new submodule]
DTD [new file with mode: 0644]
GNUmakefile [new file with mode: 0644]
LICENSES/CC0-1.0.txt [new file with mode: 0644]
LICENSES/MPL-2.0.txt [new file with mode: 0644]
README.markdown [new file with mode: 0644]
data/annotation_properties/owl¦backwardCompatibleWith [new file with mode: 0644]
data/annotation_properties/owl¦deprecated [new file with mode: 0644]
data/annotation_properties/owl¦incompatibleWith [new file with mode: 0644]
data/annotation_properties/owl¦priorVersion [new file with mode: 0644]
data/annotation_properties/owl¦versionInfo [new file with mode: 0644]
data/annotation_properties/rdfs¦comment [new file with mode: 0644]
data/annotation_properties/rdfs¦isDefinedBy [new file with mode: 0644]
data/annotation_properties/rdfs¦label [new file with mode: 0644]
data/annotation_properties/rdfs¦seeAlso [new file with mode: 0644]
data/annotation_properties/rdf¦first [new file with mode: 0644]
data/annotation_properties/rdf¦object [new file with mode: 0644]
data/annotation_properties/rdf¦predicate [new file with mode: 0644]
data/annotation_properties/rdf¦rest [new file with mode: 0644]
data/annotation_properties/rdf¦subject [new file with mode: 0644]
data/annotation_properties/shacl¦declare [new file with mode: 0644]
data/annotation_properties/skos¦altLabel [new file with mode: 0644]
data/annotation_properties/skos¦changeNote [new file with mode: 0644]
data/annotation_properties/skos¦definition [new file with mode: 0644]
data/annotation_properties/skos¦editorialNote [new file with mode: 0644]
data/annotation_properties/skos¦example [new file with mode: 0644]
data/annotation_properties/skos¦hiddenLabel [new file with mode: 0644]
data/annotation_properties/skos¦historyNote [new file with mode: 0644]
data/annotation_properties/skos¦note [new file with mode: 0644]
data/annotation_properties/skos¦prefLabel [new file with mode: 0644]
data/annotation_properties/skos¦scopeNote [new file with mode: 0644]
data/annotation_properties/vocabstatus¦term_status [new file with mode: 0644]
data/classes/anno¦Annotation [new file with mode: 0644]
data/classes/anno¦CssSelector [new file with mode: 0644]
data/classes/anno¦DataPositionSelector [new file with mode: 0644]
data/classes/anno¦Direction [new file with mode: 0644]
data/classes/anno¦FragmentSelector [new file with mode: 0644]
data/classes/anno¦HttpRequestState [new file with mode: 0644]
data/classes/anno¦Motivation [new file with mode: 0644]
data/classes/anno¦RangeSelector [new file with mode: 0644]
data/classes/anno¦ResourceSelection [new file with mode: 0644]
data/classes/anno¦Selector [new file with mode: 0644]
data/classes/anno¦SpecificResource [new file with mode: 0644]
data/classes/anno¦State [new file with mode: 0644]
data/classes/anno¦TextPositionSelector [new file with mode: 0644]
data/classes/anno¦TextQuoteSelector [new file with mode: 0644]
data/classes/anno¦TimeState [new file with mode: 0644]
data/classes/anno¦XPathSelector [new file with mode: 0644]
data/classes/awol¦Category [new file with mode: 0644]
data/classes/awol¦Content [new file with mode: 0644]
data/classes/awol¦Entry [new file with mode: 0644]
data/classes/awol¦Feed [new file with mode: 0644]
data/classes/awol¦FeedOrEntry [new file with mode: 0644]
data/classes/awol¦Generator [new file with mode: 0644]
data/classes/awol¦GeneratorOrPerson [new file with mode: 0644]
data/classes/awol¦HTML [new file with mode: 0644]
data/classes/awol¦Link [new file with mode: 0644]
data/classes/awol¦Person [new file with mode: 0644]
data/classes/awol¦PlainText [new file with mode: 0644]
data/classes/awol¦RelationType [new file with mode: 0644]
data/classes/awol¦TextContent [new file with mode: 0644]
data/classes/awol¦Version [new file with mode: 0644]
data/classes/awol¦XHTML [new file with mode: 0644]
data/classes/contact¦Address [new file with mode: 0644]
data/classes/contact¦ContactLocation [new file with mode: 0644]
data/classes/contact¦Fax [new file with mode: 0644]
data/classes/contact¦Mailbox [new file with mode: 0644]
data/classes/contact¦MobilePhone [new file with mode: 0644]
data/classes/contact¦Pager [new file with mode: 0644]
data/classes/contact¦Person [new file with mode: 0644]
data/classes/contact¦Phone [new file with mode: 0644]
data/classes/contact¦SocialEntity [new file with mode: 0644]
data/classes/dcmitype¦Collection [new file with mode: 0644]
data/classes/dcmitype¦Dataset [new file with mode: 0644]
data/classes/dcmitype¦Event [new file with mode: 0644]
data/classes/dcmitype¦Image [new file with mode: 0644]
data/classes/dcmitype¦InteractiveResource [new file with mode: 0644]
data/classes/dcmitype¦MovingImage [new file with mode: 0644]
data/classes/dcmitype¦PhysicalObject [new file with mode: 0644]
data/classes/dcmitype¦Service [new file with mode: 0644]
data/classes/dcmitype¦Software [new file with mode: 0644]
data/classes/dcmitype¦Sound [new file with mode: 0644]
data/classes/dcmitype¦StillImage [new file with mode: 0644]
data/classes/dcmitype¦Text [new file with mode: 0644]
data/classes/dcterms¦Agent [new file with mode: 0644]
data/classes/dcterms¦BibliographicResource [new file with mode: 0644]
data/classes/dcterms¦FileFormat [new file with mode: 0644]
data/classes/dcterms¦Frequency [new file with mode: 0644]
data/classes/dcterms¦Jurisdiction [new file with mode: 0644]
data/classes/dcterms¦LicenseDocument [new file with mode: 0644]
data/classes/dcterms¦LinguisticSystem [new file with mode: 0644]
data/classes/dcterms¦Location [new file with mode: 0644]
data/classes/dcterms¦LocationPeriodOrJurisdiction [new file with mode: 0644]
data/classes/dcterms¦MediaType [new file with mode: 0644]
data/classes/dcterms¦MediaTypeOrExtent [new file with mode: 0644]
data/classes/dcterms¦MethodOfAccrual [new file with mode: 0644]
data/classes/dcterms¦MethodOfInstruction [new file with mode: 0644]
data/classes/dcterms¦PeriodOfTime [new file with mode: 0644]
data/classes/dcterms¦PhysicalMedium [new file with mode: 0644]
data/classes/dcterms¦PhysicalResource [new file with mode: 0644]
data/classes/dcterms¦Policy [new file with mode: 0644]
data/classes/dcterms¦ProvenanceStatement [new file with mode: 0644]
data/classes/dcterms¦RightsStatement [new file with mode: 0644]
data/classes/dcterms¦SizeOrDuration [new file with mode: 0644]
data/classes/dcterms¦Standard [new file with mode: 0644]
data/classes/doc¦Work [new file with mode: 0644]
data/classes/foaf¦Agent [new file with mode: 0644]
data/classes/foaf¦Document [new file with mode: 0644]
data/classes/foaf¦Group [new file with mode: 0644]
data/classes/foaf¦Image [new file with mode: 0644]
data/classes/foaf¦OnlineAccount [new file with mode: 0644]
data/classes/foaf¦Organization [new file with mode: 0644]
data/classes/foaf¦Person [new file with mode: 0644]
data/classes/foaf¦Project [new file with mode: 0644]
data/classes/geo¦SpatialThing [new file with mode: 0644]
data/classes/rdfs¦Container [new file with mode: 0644]
data/classes/rdf¦Alt [new file with mode: 0644]
data/classes/rdf¦Bag [new file with mode: 0644]
data/classes/rdf¦List [new file with mode: 0644]
data/classes/rdf¦Seq [new file with mode: 0644]
data/classes/rdf¦Statement [new file with mode: 0644]
data/classes/shacl¦PrefixDeclaration [new file with mode: 0644]
data/classes/skosxl¦Label [new file with mode: 0644]
data/classes/skos¦Collection [new file with mode: 0644]
data/classes/skos¦Concept [new file with mode: 0644]
data/classes/skos¦ConceptScheme [new file with mode: 0644]
data/classes/skos¦OrderedCollection [new file with mode: 0644]
data/datatype_properties/anno¦end [new file with mode: 0644]
data/datatype_properties/anno¦exact [new file with mode: 0644]
data/datatype_properties/anno¦prefix [new file with mode: 0644]
data/datatype_properties/anno¦processingLanguage [new file with mode: 0644]
data/datatype_properties/anno¦sourceDate [new file with mode: 0644]
data/datatype_properties/anno¦sourceDateEnd [new file with mode: 0644]
data/datatype_properties/anno¦sourceDateStart [new file with mode: 0644]
data/datatype_properties/anno¦start [new file with mode: 0644]
data/datatype_properties/anno¦suffix [new file with mode: 0644]
data/datatype_properties/awol¦body [new file with mode: 0644]
data/datatype_properties/awol¦generatorVersion [new file with mode: 0644]
data/datatype_properties/awol¦id [new file with mode: 0644]
data/datatype_properties/awol¦label [new file with mode: 0644]
data/datatype_properties/awol¦lang [new file with mode: 0644]
data/datatype_properties/awol¦length [new file with mode: 0644]
data/datatype_properties/awol¦name [new file with mode: 0644]
data/datatype_properties/awol¦published [new file with mode: 0644]
data/datatype_properties/awol¦term [new file with mode: 0644]
data/datatype_properties/awol¦type [new file with mode: 0644]
data/datatype_properties/awol¦updated [new file with mode: 0644]
data/datatype_properties/contact¦birthday [new file with mode: 0644]
data/datatype_properties/contact¦city [new file with mode: 0644]
data/datatype_properties/contact¦country [new file with mode: 0644]
data/datatype_properties/contact¦description [new file with mode: 0644]
data/datatype_properties/contact¦familyName [new file with mode: 0644]
data/datatype_properties/contact¦firstName [new file with mode: 0644]
data/datatype_properties/contact¦fullName [new file with mode: 0644]
data/datatype_properties/contact¦givenName [new file with mode: 0644]
data/datatype_properties/contact¦knownAs [new file with mode: 0644]
data/datatype_properties/contact¦lastName [new file with mode: 0644]
data/datatype_properties/contact¦middleInitial [new file with mode: 0644]
data/datatype_properties/contact¦middleName [new file with mode: 0644]
data/datatype_properties/contact¦motherTongue [new file with mode: 0644]
data/datatype_properties/contact¦personalSuffix [new file with mode: 0644]
data/datatype_properties/contact¦personalTitle [new file with mode: 0644]
data/datatype_properties/contact¦postalCode [new file with mode: 0644]
data/datatype_properties/contact¦preferredURI [new file with mode: 0644]
data/datatype_properties/contact¦region [new file with mode: 0644]
data/datatype_properties/contact¦sortName [new file with mode: 0644]
data/datatype_properties/contact¦stateOrProvince [new file with mode: 0644]
data/datatype_properties/contact¦street [new file with mode: 0644]
data/datatype_properties/contact¦street2 [new file with mode: 0644]
data/datatype_properties/contact¦street3 [new file with mode: 0644]
data/datatype_properties/contact¦zip [new file with mode: 0644]
data/datatype_properties/dc11¦contributor [new file with mode: 0644]
data/datatype_properties/dc11¦coverage [new file with mode: 0644]
data/datatype_properties/dc11¦creator [new file with mode: 0644]
data/datatype_properties/dc11¦description [new file with mode: 0644]
data/datatype_properties/dc11¦format [new file with mode: 0644]
data/datatype_properties/dc11¦language [new file with mode: 0644]
data/datatype_properties/dc11¦publisher [new file with mode: 0644]
data/datatype_properties/dc11¦relation [new file with mode: 0644]
data/datatype_properties/dc11¦rights [new file with mode: 0644]
data/datatype_properties/dc11¦source [new file with mode: 0644]
data/datatype_properties/dc11¦subject [new file with mode: 0644]
data/datatype_properties/dc11¦type [new file with mode: 0644]
data/datatype_properties/dcterms¦alternative [new file with mode: 0644]
data/datatype_properties/dcterms¦available [new file with mode: 0644]
data/datatype_properties/dcterms¦bibliographicCitation [new file with mode: 0644]
data/datatype_properties/dcterms¦created [new file with mode: 0644]
data/datatype_properties/dcterms¦date [new file with mode: 0644]
data/datatype_properties/dcterms¦dateAccepted [new file with mode: 0644]
data/datatype_properties/dcterms¦dateCopyrighted [new file with mode: 0644]
data/datatype_properties/dcterms¦dateSubmitted [new file with mode: 0644]
data/datatype_properties/dcterms¦identifier [new file with mode: 0644]
data/datatype_properties/dcterms¦issued [new file with mode: 0644]
data/datatype_properties/dcterms¦modified [new file with mode: 0644]
data/datatype_properties/dcterms¦title [new file with mode: 0644]
data/datatype_properties/dcterms¦valid [new file with mode: 0644]
data/datatype_properties/doc¦version [new file with mode: 0644]
data/datatype_properties/foaf¦accountName [new file with mode: 0644]
data/datatype_properties/foaf¦familyName [new file with mode: 0644]
data/datatype_properties/foaf¦firstName [new file with mode: 0644]
data/datatype_properties/foaf¦gender [new file with mode: 0644]
data/datatype_properties/foaf¦givenName [new file with mode: 0644]
data/datatype_properties/foaf¦lastName [new file with mode: 0644]
data/datatype_properties/foaf¦name [new file with mode: 0644]
data/datatype_properties/foaf¦nick [new file with mode: 0644]
data/datatype_properties/foaf¦phone [new file with mode: 0644]
data/datatype_properties/foaf¦plan [new file with mode: 0644]
data/datatype_properties/foaf¦title [new file with mode: 0644]
data/datatype_properties/rdf¦value [new file with mode: 0644]
data/datatype_properties/shacl¦namespace [new file with mode: 0644]
data/datatype_properties/shacl¦prefix [new file with mode: 0644]
data/datatype_properties/skosxl¦literalForm [new file with mode: 0644]
data/datatype_properties/skos¦notation [new file with mode: 0644]
data/datatype_properties/splashText [new file with mode: 0644]
data/datatype_properties/title [new file with mode: 0644]
data/datatypes/contact¦LanguageCode [new file with mode: 0644]
data/named_individuals/_ANNO_ [new file with mode: 0644]
data/named_individuals/_AWOL_ [new file with mode: 0644]
data/named_individuals/_DCMI_ [new file with mode: 0644]
data/named_individuals/_EVO-ONT_ [new file with mode: 0644]
data/named_individuals/_FOAF_ [new file with mode: 0644]
data/named_individuals/_HTML_ [new file with mode: 0644]
data/named_individuals/_MEDIA-FRAGS_ [new file with mode: 0644]
data/named_individuals/_OWL2-MAPPING_ [new file with mode: 0644]
data/named_individuals/_OWL2_ [new file with mode: 0644]
data/named_individuals/_RDF11-SCHEMA_ [new file with mode: 0644]
data/named_individuals/_RFC4287_ [new file with mode: 0644]
data/named_individuals/_RFC5147_ [new file with mode: 0644]
data/named_individuals/_RFC6838_ [new file with mode: 0644]
data/named_individuals/_RFC7303_ [new file with mode: 0644]
data/named_individuals/_RFC8288_ [new file with mode: 0644]
data/named_individuals/_SHACL_ [new file with mode: 0644]
data/named_individuals/_SKOS_ [new file with mode: 0644]
data/named_individuals/_SVG2_ [new file with mode: 0644]
data/named_individuals/_SWAP-PIM_ [new file with mode: 0644]
data/named_individuals/_VOCAB-STATUS_ [new file with mode: 0644]
data/named_individuals/anno¦assessing [new file with mode: 0644]
data/named_individuals/anno¦autoDirection [new file with mode: 0644]
data/named_individuals/anno¦bookmarking [new file with mode: 0644]
data/named_individuals/anno¦classifying [new file with mode: 0644]
data/named_individuals/anno¦commenting [new file with mode: 0644]
data/named_individuals/anno¦describing [new file with mode: 0644]
data/named_individuals/anno¦editing [new file with mode: 0644]
data/named_individuals/anno¦highlighting [new file with mode: 0644]
data/named_individuals/anno¦identifying [new file with mode: 0644]
data/named_individuals/anno¦linking [new file with mode: 0644]
data/named_individuals/anno¦ltrDirection [new file with mode: 0644]
data/named_individuals/anno¦moderating [new file with mode: 0644]
data/named_individuals/anno¦motivationScheme [new file with mode: 0644]
data/named_individuals/anno¦questioning [new file with mode: 0644]
data/named_individuals/anno¦replying [new file with mode: 0644]
data/named_individuals/anno¦rtlDirection [new file with mode: 0644]
data/named_individuals/anno¦tagging [new file with mode: 0644]
data/named_individuals/rdf¦nil [new file with mode: 0644]
data/named_individuals/rel¦alternate [new file with mode: 0644]
data/object_properties/anno¦canonical [new file with mode: 0644]
data/object_properties/anno¦hasBody [new file with mode: 0644]
data/object_properties/anno¦hasEndSelector [new file with mode: 0644]
data/object_properties/anno¦hasPurpose [new file with mode: 0644]
data/object_properties/anno¦hasScope [new file with mode: 0644]
data/object_properties/anno¦hasSelector [new file with mode: 0644]
data/object_properties/anno¦hasSource [new file with mode: 0644]
data/object_properties/anno¦hasStartSelector [new file with mode: 0644]
data/object_properties/anno¦hasState [new file with mode: 0644]
data/object_properties/anno¦hasTarget [new file with mode: 0644]
data/object_properties/anno¦motivatedBy [new file with mode: 0644]
data/object_properties/anno¦refinedBy [new file with mode: 0644]
data/object_properties/anno¦textDirection [new file with mode: 0644]
data/object_properties/anno¦via [new file with mode: 0644]
data/object_properties/awol¦aggregates [new file with mode: 0644]
data/object_properties/awol¦author [new file with mode: 0644]
data/object_properties/awol¦category [new file with mode: 0644]
data/object_properties/awol¦contains [new file with mode: 0644]
data/object_properties/awol¦content [new file with mode: 0644]
data/object_properties/awol¦contributor [new file with mode: 0644]
data/object_properties/awol¦email [new file with mode: 0644]
data/object_properties/awol¦entry [new file with mode: 0644]
data/object_properties/awol¦generator [new file with mode: 0644]
data/object_properties/awol¦icon [new file with mode: 0644]
data/object_properties/awol¦link [new file with mode: 0644]
data/object_properties/awol¦logo [new file with mode: 0644]
data/object_properties/awol¦rel [new file with mode: 0644]
data/object_properties/awol¦rights [new file with mode: 0644]
data/object_properties/awol¦scheme [new file with mode: 0644]
data/object_properties/awol¦source [new file with mode: 0644]
data/object_properties/awol¦src [new file with mode: 0644]
data/object_properties/awol¦subject [new file with mode: 0644]
data/object_properties/awol¦subtitle [new file with mode: 0644]
data/object_properties/awol¦summary [new file with mode: 0644]
data/object_properties/awol¦title [new file with mode: 0644]
data/object_properties/awol¦to [new file with mode: 0644]
data/object_properties/contact¦address [new file with mode: 0644]
data/object_properties/contact¦assistant [new file with mode: 0644]
data/object_properties/contact¦child [new file with mode: 0644]
data/object_properties/contact¦emergency [new file with mode: 0644]
data/object_properties/contact¦fax [new file with mode: 0644]
data/object_properties/contact¦home [new file with mode: 0644]
data/object_properties/contact¦homePage [new file with mode: 0644]
data/object_properties/contact¦mailbox [new file with mode: 0644]
data/object_properties/contact¦mobile [new file with mode: 0644]
data/object_properties/contact¦office [new file with mode: 0644]
data/object_properties/contact¦organization [new file with mode: 0644]
data/object_properties/contact¦participant [new file with mode: 0644]
data/object_properties/contact¦partner [new file with mode: 0644]
data/object_properties/contact¦phone [new file with mode: 0644]
data/object_properties/contact¦publicHomePage [new file with mode: 0644]
data/object_properties/contact¦vacationHome [new file with mode: 0644]
data/object_properties/contact¦webPage [new file with mode: 0644]
data/object_properties/dc11¦date [new file with mode: 0644]
data/object_properties/dc11¦identifier [new file with mode: 0644]
data/object_properties/dc11¦title [new file with mode: 0644]
data/object_properties/dcterms¦abstract [new file with mode: 0644]
data/object_properties/dcterms¦accessRights [new file with mode: 0644]
data/object_properties/dcterms¦accrualMethod [new file with mode: 0644]
data/object_properties/dcterms¦accrualPeriodicity [new file with mode: 0644]
data/object_properties/dcterms¦accrualPolicy [new file with mode: 0644]
data/object_properties/dcterms¦conformsTo [new file with mode: 0644]
data/object_properties/dcterms¦contributor [new file with mode: 0644]
data/object_properties/dcterms¦coverage [new file with mode: 0644]
data/object_properties/dcterms¦creator [new file with mode: 0644]
data/object_properties/dcterms¦description [new file with mode: 0644]
data/object_properties/dcterms¦extent [new file with mode: 0644]
data/object_properties/dcterms¦format [new file with mode: 0644]
data/object_properties/dcterms¦hasFormat [new file with mode: 0644]
data/object_properties/dcterms¦hasPart [new file with mode: 0644]
data/object_properties/dcterms¦hasVersion [new file with mode: 0644]
data/object_properties/dcterms¦instructionalMethod [new file with mode: 0644]
data/object_properties/dcterms¦isFormatOf [new file with mode: 0644]
data/object_properties/dcterms¦isPartOf [new file with mode: 0644]
data/object_properties/dcterms¦isReferencedBy [new file with mode: 0644]
data/object_properties/dcterms¦isReplacedBy [new file with mode: 0644]
data/object_properties/dcterms¦isRequiredBy [new file with mode: 0644]
data/object_properties/dcterms¦isVersionOf [new file with mode: 0644]
data/object_properties/dcterms¦language [new file with mode: 0644]
data/object_properties/dcterms¦license [new file with mode: 0644]
data/object_properties/dcterms¦medium [new file with mode: 0644]
data/object_properties/dcterms¦provenance [new file with mode: 0644]
data/object_properties/dcterms¦publisher [new file with mode: 0644]
data/object_properties/dcterms¦references [new file with mode: 0644]
data/object_properties/dcterms¦relation [new file with mode: 0644]
data/object_properties/dcterms¦replaces [new file with mode: 0644]
data/object_properties/dcterms¦requires [new file with mode: 0644]
data/object_properties/dcterms¦rights [new file with mode: 0644]
data/object_properties/dcterms¦rightsHolder [new file with mode: 0644]
data/object_properties/dcterms¦source [new file with mode: 0644]
data/object_properties/dcterms¦spatial [new file with mode: 0644]
data/object_properties/dcterms¦subject [new file with mode: 0644]
data/object_properties/dcterms¦tableOfContents [new file with mode: 0644]
data/object_properties/dcterms¦temporal [new file with mode: 0644]
data/object_properties/dcterms¦type [new file with mode: 0644]
data/object_properties/foaf¦account [new file with mode: 0644]
data/object_properties/foaf¦accountServiceHomepage [new file with mode: 0644]
data/object_properties/foaf¦based_near [new file with mode: 0644]
data/object_properties/foaf¦currentProject [new file with mode: 0644]
data/object_properties/foaf¦depiction [new file with mode: 0644]
data/object_properties/foaf¦depicts [new file with mode: 0644]
data/object_properties/foaf¦focus [new file with mode: 0644]
data/object_properties/foaf¦homepage [new file with mode: 0644]
data/object_properties/foaf¦img [new file with mode: 0644]
data/object_properties/foaf¦isPrimaryTopicOf [new file with mode: 0644]
data/object_properties/foaf¦knows [new file with mode: 0644]
data/object_properties/foaf¦logo [new file with mode: 0644]
data/object_properties/foaf¦made [new file with mode: 0644]
data/object_properties/foaf¦maker [new file with mode: 0644]
data/object_properties/foaf¦member [new file with mode: 0644]
data/object_properties/foaf¦page [new file with mode: 0644]
data/object_properties/foaf¦pastProject [new file with mode: 0644]
data/object_properties/foaf¦primaryTopic [new file with mode: 0644]
data/object_properties/foaf¦publications [new file with mode: 0644]
data/object_properties/foaf¦thumbnail [new file with mode: 0644]
data/object_properties/foaf¦tipjar [new file with mode: 0644]
data/object_properties/foaf¦topic [new file with mode: 0644]
data/object_properties/foaf¦topic_interest [new file with mode: 0644]
data/object_properties/foaf¦weblog [new file with mode: 0644]
data/object_properties/foaf¦workInfoHomepage [new file with mode: 0644]
data/object_properties/is [new file with mode: 0644]
data/object_properties/rdfs¦member [new file with mode: 0644]
data/object_properties/rel¦alternate [new file with mode: 0644]
data/object_properties/skosxl¦altLabel [new file with mode: 0644]
data/object_properties/skosxl¦hiddenLabel [new file with mode: 0644]
data/object_properties/skosxl¦labelRelation [new file with mode: 0644]
data/object_properties/skosxl¦prefLabel [new file with mode: 0644]
data/object_properties/skos¦broadMatch [new file with mode: 0644]
data/object_properties/skos¦broader [new file with mode: 0644]
data/object_properties/skos¦broaderTransitive [new file with mode: 0644]
data/object_properties/skos¦closeMatch [new file with mode: 0644]
data/object_properties/skos¦exactMatch [new file with mode: 0644]
data/object_properties/skos¦hasTopConcept [new file with mode: 0644]
data/object_properties/skos¦inScheme [new file with mode: 0644]
data/object_properties/skos¦mappingRelation [new file with mode: 0644]
data/object_properties/skos¦member [new file with mode: 0644]
data/object_properties/skos¦memberList [new file with mode: 0644]
data/object_properties/skos¦narrowMatch [new file with mode: 0644]
data/object_properties/skos¦narrower [new file with mode: 0644]
data/object_properties/skos¦narrowerTransitive [new file with mode: 0644]
data/object_properties/skos¦related [new file with mode: 0644]
data/object_properties/skos¦relatedMatch [new file with mode: 0644]
data/object_properties/skos¦semanticRelation [new file with mode: 0644]
data/object_properties/skos¦topConceptOf [new file with mode: 0644]
data/ontologies/¦ [new file with mode: 0644]
parsers/data/ontology.xslt [new file with mode: 0644]
site/index.xhtml [new file with mode: 0644]
site/style.css [new file with mode: 0644]
site/terms [new file with mode: 0644]
transforms/data/cleanup.xslt [new file with mode: 0644]
transforms/data/rdf.xslt [new file with mode: 0644]
transforms/site/infer.xslt [new file with mode: 0644]
transforms/site/metadata.xslt [new file with mode: 0644]
transforms/site/render.xslt [new file with mode: 0644]
transforms/site/terms.xslt [new file with mode: 0644]

diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..e75c358
--- /dev/null
@@ -0,0 +1,6 @@
+# SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+# SPDX-License-Identifier: CC0-1.0
+
+/build
+/public
+.grass
diff --git a/.gitmodules b/.gitmodules
new file mode 100644 (file)
index 0000000..9467592
--- /dev/null
@@ -0,0 +1,12 @@
+# SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+# SPDX-License-Identifier: CC0-1.0
+
+[submodule "libxml2"]
+       path = .libxml2
+       url = https://gitlab.gnome.org/GNOME/libxml2.git
+[submodule "书社"]
+       path = .⛩📰
+       url = https://git.ladys.computer/Shushe.git
+[submodule "Yseme"]
+       path = .👥📤
+       url = https://git.ladys.computer/Yseme.git
diff --git a/.libxml2 b/.libxml2
new file mode 160000 (submodule)
index 0000000..4b3f860
--- /dev/null
+++ b/.libxml2
@@ -0,0 +1 @@
+Subproject commit 4b3f860e5420ade19a825dc7f4d75789489535ba
diff --git a/.â\9b©ð\9f\93° b/.â\9b©ð\9f\93°
new file mode 160000 (submodule)
index 0000000..884130a
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 884130a52be6bfe21e524498385cb6486495b383
diff --git a/.ð\9f\91¥ð\9f\93¤ b/.ð\9f\91¥ð\9f\93¤
new file mode 160000 (submodule)
index 0000000..f6ab022
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit f6ab0225fdd5a404fbd592b0d5c051f0cbea4135
diff --git a/DTD b/DTD
new file mode 100644 (file)
index 0000000..62f2e83
--- /dev/null
+++ b/DTD
@@ -0,0 +1,206 @@
+<?xml encoding="UTF-8"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+
+<!-- Text Markup -->
+<!ENTITY % blocks '(list|p|table)+'>
+<!ENTITY % inlines 'code|em|ptr|ref|resource|strong|value'>
+<!ELEMENT p (#PCDATA|%inlines;|note)*>
+<!ELEMENT code (#PCDATA)>
+<!ELEMENT em (#PCDATA)>
+<!ELEMENT strong (#PCDATA)>
+
+<!-- Notes -->
+<!ELEMENT note (%blocks;)>
+<!ATTLIST note
+       n CDATA #REQUIRED
+>
+
+<!-- Links -->
+<!ELEMENT ptr EMPTY>
+<!ATTLIST ptr
+       target CDATA #REQUIRED
+       type (class|property|individual) #IMPLIED
+>
+<!ELEMENT ref (#PCDATA)>
+<!ATTLIST ref
+       target CDATA #REQUIRED
+       type (class|property|individual) #IMPLIED
+>
+
+<!-- Tables -->
+<!ELEMENT table (row)+>
+<!ELEMENT row (cell)+>
+<!ATTLIST row
+       role (label|data) "data"
+>
+<!ELEMENT cell (#PCDATA|%inlines;)*>
+<!ATTLIST cell
+       role (label|data) "data"
+>
+
+<!-- Lists -->
+<!ELEMENT list (item)*>
+<!ATTLIST list
+       rend (bulleted|numbered) "bulleted"
+>
+<!ELEMENT item (%blocks;)>
+
+<!-- Anno -->
+<!ELEMENT SpecificResource EMPTY><!-- this actually becomes anno:ResourceSelection, not anno:SpecificResource, but changing the name to match would require editing a lot of files -->
+<!ATTLIST SpecificResource
+  source CDATA #REQUIRED
+  fragment CDATA #IMPLIED
+>
+
+<!-- Skos -->
+<!ELEMENT inScheme (resource)>
+
+<!-- Shacl -->
+<!ELEMENT declare (prefix,namespace)>
+<!ELEMENT namespace (#PCDATA)>
+<!ELEMENT prefix (#PCDATA)>
+
+<!-- Annotations -->
+<!ENTITY % annotations '(label*,comment*,isDefinedBy*)'>
+<!ELEMENT comment (%blocks;)>
+<!ATTLIST comment
+       xml:lang NMTOKEN #REQUIRED
+>
+<!ELEMENT isDefinedBy (resource|SpecificResource)>
+<!ELEMENT label (#PCDATA)>
+<!ATTLIST label
+       xml:lang NMTOKEN #REQUIRED
+>
+
+<!-- Helper Elements -->
+<!ELEMENT resource (#PCDATA)>
+<!ATTLIST resource
+       name CDATA #REQUIRED
+>
+<!ELEMENT value (#PCDATA)>
+<!ATTLIST value
+       datatype CDATA #IMPLIED
+       xml:lang NMTOKEN #IMPLIED
+>
+
+<!-- Axioms -->
+<!ELEMENT allValuesFrom (Class|Datatype|Restriction|resource)>
+<!ELEMENT assertionProperty (resource)>
+<!ELEMENT cardinality (#PCDATA)>
+<!ELEMENT complementOf (Class|Datatype|Restriction|resource)>
+<!ELEMENT differentFrom (resource)>
+<!ELEMENT disjointUnionOf (Class|Restriction|resource)+>
+<!ELEMENT disjointWith (Class|Datatype|Restriction|resource)>
+<!ELEMENT domain (Class|Restriction|resource)>
+<!ELEMENT equivalentClass (Class|Datatype|Restriction|resource)>
+<!ELEMENT equivalentProperty (DatatypeProperty|ObjectProperty|resource)>
+<!ELEMENT hasKey (DatatypeProperty|ObjectProperty|resource)+>
+<!ELEMENT hasSelf EMPTY>
+<!ELEMENT hasValue (resource|value)>
+<!ELEMENT intersectionOf (Class|Datatype|Restriction|resource)+>
+<!ELEMENT inverseOf (Class|Datatype|Restriction|resource)>
+<!ELEMENT maxCardinality (#PCDATA)>
+<!ELEMENT maxQualifiedCardinality (#PCDATA)>
+<!ELEMENT members (Class|Restriction|resource)+>
+<!ELEMENT minCardinality (#PCDATA)>
+<!ELEMENT minQualifiedCardinality (#PCDATA)>
+<!ELEMENT onClass (Class|Restriction|resource)>
+<!ELEMENT onDataRange (Datatype|resource)>
+<!ELEMENT onDatatype (resource)>
+<!ELEMENT onProperty (ObjectProperty|DatatypeProperty|resource)>
+<!ELEMENT oneOf (Class|Datatype|Restriction|resource)+>
+<!ELEMENT propertyChainAxiom (ObjectProperty|resource)+>
+<!ELEMENT propertyDisjointWith (DatatypeProperty|ObjectProperty|resource)>
+<!ELEMENT qualifiedCardinality (#PCDATA)>
+<!ELEMENT range (Class|Datatype|Restriction|resource)>
+<!ELEMENT sameAs (resource)>
+<!ELEMENT someValuesFrom (Class|Datatype|Restriction|resource)>
+<!ELEMENT sourceIndividual (resource)>
+<!ELEMENT subClassOf (Class|Restriction|resource)>
+<!ELEMENT subPropertyOf (DatatypeProperty|ObjectProperty|resource)>
+<!ELEMENT superClassOf (Class|Restriction)> <!-- inverse subClassOf; only use for anonymous subclasses -->
+<!ELEMENT targetIndividual (resource)>
+<!ELEMENT type (Class|Restriction|resource)>
+<!ELEMENT unionOf (Class|Datatype|Restriction|resource)+>
+<!ELEMENT withRestrictions (langRange|length|maxExclusive|maxInclusive|maxLength|minExclusive|minInclusive|minLength|pattern)+>
+
+<!-- Restrictions -->
+<!ELEMENT langRange (#PCDATA)>
+<!ELEMENT length (#PCDATA)>
+<!ELEMENT maxExclusive (#PCDATA)>
+<!ATTLIST maxExclusive
+       datatype CDATA #REQUIRED
+>
+<!ELEMENT maxInclusive (#PCDATA)>
+<!ATTLIST maxInclusive
+       datatype CDATA #REQUIRED
+>
+<!ELEMENT maxLength (#PCDATA)>
+<!ELEMENT minExclusive (#PCDATA)>
+<!ATTLIST minExclusive
+       datatype CDATA #REQUIRED
+>
+<!ELEMENT minInclusive (#PCDATA)>
+<!ATTLIST minInclusive
+       datatype CDATA #REQUIRED
+>
+<!ELEMENT minLength (#PCDATA)>
+<!ELEMENT pattern (#PCDATA)>
+
+<!-- Axiom Classes -->
+<!ELEMENT AllDifferent (members)>
+<!ELEMENT AllDisjointClasses (members)>
+<!ELEMENT AllDisjointProperties (members)>
+<!ELEMENT NegativeObjectPropertyAssertion (assertionProperty,sourceIndividual,targetIndividual)>
+
+<!-- Restrictions -->
+<!ELEMENT Restriction (onProperty,(((minQualifiedCardinality|maxQualifiedCardinality|qualifiedCardinality),(onClass|onDataRange))|allValuesFrom|cardinality|hasValue|hasSelf|minCardinality|maxCardinality|someValuesFrom))>
+
+<!-- Declarations -->
+<!ELEMENT Class (%annotations;,((equivalentClass*,subClassOf*,superClassOf*,disjointWith*,hasKey*)|complementOf|disjointUnionOf|intersectionOf|oneOf|unionOf))>
+<!ATTLIST Class
+       name CDATA #IMPLIED
+       status (plumbing|unstable|testing|stable|archaic) #IMPLIED
+>
+<!ELEMENT Datatype (%annotations;,(equivalentClass|complementOf|intersectionOf|unionOf|(onDatatype,withRestrictions)))> <!-- oneOf not supported; lists of literals are difficult -->
+<!ATTLIST Datatype
+       name CDATA #IMPLIED
+       status (plumbing|unstable|testing|stable|archaic) #IMPLIED
+>
+<!ELEMENT AnnotationProperty (%annotations;,subPropertyOf*,domain*,range*)>
+<!ATTLIST AnnotationProperty
+       name CDATA #IMPLIED
+       status (plumbing|unstable|testing|stable|archaic) #IMPLIED
+>
+<!ELEMENT ObjectProperty (%annotations;,equivalentProperty*,subPropertyOf*,inverseOf*,propertyDisjointWith*,propertyChainAxiom*,domain*,range*)>
+<!ATTLIST ObjectProperty
+       asymmetric (no|yes) "no"
+       functional (no|yes) "no"
+       inverseFunctional (no|yes) "no"
+       irreflexive (no|yes) "no"
+       name CDATA #IMPLIED
+       reflexive (no|yes) "no"
+       status (plumbing|unstable|testing|stable|archaic) #IMPLIED
+       symmetric (no|yes) "no"
+       transitive (no|yes) "no"
+>
+<!ELEMENT DatatypeProperty (%annotations;,equivalentProperty*,subPropertyOf*,propertyDisjointWith*,domain*,range*)>
+<!ATTLIST DatatypeProperty
+       functional (no|yes) "no"
+       name CDATA #IMPLIED
+       status (plumbing|unstable|testing|stable|archaic) #IMPLIED
+>
+<!ELEMENT NamedIndividual (%annotations;,type*,sameAs*,differentFrom*,inScheme*)>
+<!ATTLIST NamedIndividual
+       name CDATA #IMPLIED
+       status (plumbing|unstable|testing|stable|archaic) #IMPLIED
+>
+
+<!-- Ontology -->
+<!ELEMENT Ontology (%annotations;,declare*)>
+<!ATTLIST Ontology
+       name CDATA #IMPLIED
+>
diff --git a/GNUmakefile b/GNUmakefile
new file mode 100644 (file)
index 0000000..07262f9
--- /dev/null
@@ -0,0 +1,128 @@
+# SPDX-FileCopyrightText: 2023-2024 Lady <https://www.ladys.computer/about/#lady>
+# SPDX-License-Identifier: MPL-2.0
+
+SHELL = /bin/sh
+
+# Copyright © 2023–2024 Lady [@ Ladys Computer].
+#
+# This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
+# If a copy of the M·P·L was not distributed with this file, You can obtain one at <https://mozilla.org/MPL/2.0/>.
+
+CP := cp
+FIND := find
+GIT := git
+MKDIR := mkdir
+PRINTF := printf
+RM := rm
+SED := sed
+TEST := test
+TOUCH := touch
+XARGS := xargs
+
+DATASRCDIR := data
+SITESRCDIR := site
+BUILDDIR := build
+DATABUILDDIR := build/data
+RDFBUILDDIR := build/rdf
+SITEBUILDDIR := build/site
+BUILDTARGET := .grass
+DESTDIR := public
+
+THISDIR := $(patsubst %/,%,$(dir $(lastword $(MAKEFILE_LIST))))
+
+SHUSHE := .⛩📰
+MAKEOPTS := CP='$(CP)' FIND='$(FIND)' GIT='$(GIT)' MKDIR='$(MKDIR)' PRINTF='$(PRINTF)' RM='$(RM)' SED='$(SED)' TEST='$(TEST)' TOUCH='$(TOUCH)' XARGS='$(XARGS)'
+
+# Stage 1: Build R·D·F files to build/rdf
+SHUSHEDATAOPTS := $(MAKEOPTS) SRCDIR='$(DATASRCDIR)' INCLUDEDIR='$(DATASRCDIR)' BUILDDIR='$(DATABUILDDIR)' DESTDIR='$(RDFBUILDDIR)' EXTRAPARSERS='$(wildcard $(THISDIR)/parsers/data/*.xslt)' EXTRAPARSERLIBS='$(DATASRCDIR)/ontologies/¦' EXTRAFINDINCLUDERULES='-not '"'"'('"'"' '"'"'('"'"' -name ontologies -o -name profiles '"'"')'"'"' -a -type d -a -prune '"'"')'"'"'' EXTRATRANSFORMS='$(wildcard $(THISDIR)/transforms/data/*.xslt)'
+
+# Stage 2: Build the actual site
+SHUSHESITEOPTS := $(MAKEOPTS) SRCDIR='$(SITESRCDIR)' INCLUDEDIR='$(RDFBUILDDIR)' BUILDDIR='$(SITEBUILDDIR)' DESTDIR='$(DESTDIR)' EXTRAPARSERS='$(wildcard $(THISDIR)/parsers/site/*.xslt)' EXTRATRANSFORMS='$(wildcard $(THISDIR)/transforms/site/*.xslt)'
+
+YSEME := .👥📤
+YSEMEOPTS := $(MAKEOPTS) BUILDTARGET='.grass' DESTDIR='$(DESTDIR)' SERVERPATH='lady/vocab'
+
+xmls := $(wildcard $(DATASRCDIR)/*/*)
+
+# ━ § Call out to ⛩📰 书社 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+
+install : $(SHUSHE)/GNUmakefile build
+       @for publicfile in $(patsubst %,"%",$(wildcard $(DESTDIR)/*)); do if $(GIT) check-ignore -q "$$publicfile"; then $(RM) -rf "$$publicfile"; fi; done
+       @for target in $$($(MAKE) -s -f '$<' listout QUIET=1 $(SHUSHEDATAOPTS)); do $(PRINTF) '%s\n' "$$target" | $(SED) 's/¦/:/g' | $(XARGS) $(PRINTF) 'Copying </%s>…\n' >&2; $(PRINTF) '%s\n' "$$target" | $(SED) 's:^:$(DESTDIR)/:;s/¦/:/g' | $(XARGS) $(CP) '$(RDFBUILDDIR)/'"$$target"; done
+       @for target in $$($(MAKE) -s -f '$<' listout QUIET=1 $(SHUSHESITEOPTS)); do for dir in $$($(FIND) "$(SITEBUILDDIR)/public/$$target" -not -name '.*' -and -type d); do if $(TEST) '!' -d "$(DESTDIR)/$$dir"; then $(PRINTF) '%s\n' "$$dir" | $(SED) 's:$(SITEBUILDDIR)/public/:$(DESTDIR)/:' | $(XARGS) $(MKDIR) -p; fi; done; for file in $$($(FIND) "$(SITEBUILDDIR)/public/$$target" -not '(' -name '.*' -or -type d ')'); do $(PRINTF) '%s\n' "$$file" | $(SED) 's:$(SITEBUILDDIR)/public/:/:;s:/_\(.*\)_\(\..*\)$$:/(\1)\2:g;s/¦/:/g' | $(XARGS) $(PRINTF) 'Copying <%s>…\n' >&2; $(PRINTF) '%s\n' "$$file" | $(SED) 's:$(SITEBUILDDIR)/public/:$(DESTDIR)/:;s:/_\(.*\)_\(\..*\)$$:/(\1)\2:g;s/¦/:/g' | $(XARGS) $(CP) "$$file"; done; done
+       $(TOUCH) '$(BUILDTARGET)'
+
+build : $(SHUSHE)/GNUmakefile
+       @$(RM) -rf '$(RDFBUILDDIR)/profiles'
+       @$(MAKE) -f '$<' install $(SHUSHEDATAOPTS)
+       @$(MAKE) -f '$<' $(SHUSHESITEOPTS)
+
+clean : $(SHUSHE)/GNUmakefile
+       @$(MAKE) -f '$<' $@ $(SHUSHEDATAOPTS)
+       @$(RM) -rf '$(RDFBUILDDIR)'
+       @$(MAKE) -f '$<' $@ $(SHUSHESITEOPTS)
+
+list listout : $(SHUSHE)/GNUmakefile
+       @$(RM) -rf '$(RDFBUILDDIR)/profiles'
+       @$(MAKE) -f '$<' install $(SHUSHEDATAOPTS)
+       @$(MAKE) -f '$<' $@ $(SHUSHESITEOPTS)
+
+$(BUILDDIR)/data/% : $(SHUSHE)/GNUmakefile FORCE
+       @$(MAKE) -f '$<' $@ $(SHUSHEDATAOPTS)
+
+$(BUILDDIR)/rdf/% : $(SHUSHE)/GNUmakefile FORCE
+       @$(MAKE) -f '$<' $@ $(SHUSHEDATAOPTS)
+
+$(BUILDDIR)/site/% : $(SHUSHE)/GNUmakefile FORCE
+       @$(RM) -rf '$(RDFBUILDDIR)/profiles'
+       @$(MAKE) -f '$<' install $(SHUSHEDATAOPTS)
+       @$(MAKE) -f '$<' $@ $(SHUSHESITEOPTS)
+
+$(DESTDIR)/% : $(SHUSHE)/GNUmakefile FORCE
+       @$(RM) -rf '$(RDFBUILDDIR)/profiles'
+       @$(MAKE) -f '$<' install $(SHUSHEDATAOPTS)
+       @$(MAKE) -f '$<' $@ $(SHUSHESITEOPTS)
+
+# ━ § Call out to 👥📤 Yseme ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+
+dry-sync sync : $(YSEME)/GNUmakefile
+       @$(MAKE) -f '$<' $@ $(YSEMEOPTS)
+
+# ━ § Build xmllint ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+
+# This is temporarily required as DTD resolving requires a very new
+# version of `xmllint´ when a filename contains non‐Ascii characters.
+# Once `libxml2` ≥ 2.13.2 is more widely available, this subrepo and
+# build step can probably be dropped.
+
+.libxml2/xmllint : .libxml2/autogen.sh
+       $(CD) .libxml2 && ./autogen.sh && ./configure
+       $(MAKE) -C .libxml2
+
+# ━ § Linting ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+
+lint : $(foreach xml,$(xmls),lint][$(xml)) ;
+
+$(foreach xml,$(xmls),lint][$(xml)) : lint][% : .libxml2/xmllint
+       @.libxml2/xmllint --valid --noout '$*'
+
+# ━ § Special targets ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+
+.IGNORE : $(foreach xml,$(xmls),lint][$(xml)) ;
+
+.PHONY : FORCE build clean dry-sync gone lint $(foreach xml,$(xmls),lint][$(xml)) list prebuild sync uninstall ;
+
+gone : clean uninstall ;
+
+uninstall :
+       @for publicfile in $(patsubst %,"%",$(wildcard $(DESTDIR)/*)); do if $(GIT) check-ignore -q "$$publicfile"; then $(RM) -rf "$$publicfile"; fi; done
+
+FORCE : ;
+
+# ━ § Make·file targets ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
+
+$(SHUSHE)/GNUmakefile $(YSEME)/GNUmakefile : %/GNUmakefile : FORCE
+       $(GIT) submodule update --init '$*'
+
+.libxml2/autogen.sh : %/autogen.sh : FORCE
+       $(GIT) submodule update --init '$*'
diff --git a/LICENSES/CC0-1.0.txt b/LICENSES/CC0-1.0.txt
new file mode 100644 (file)
index 0000000..0e259d4
--- /dev/null
@@ -0,0 +1,121 @@
+Creative Commons Legal Code
+
+CC0 1.0 Universal
+
+    CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
+    LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN
+    ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
+    INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
+    REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS
+    PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM
+    THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED
+    HEREUNDER.
+
+Statement of Purpose
+
+The laws of most jurisdictions throughout the world automatically confer
+exclusive Copyright and Related Rights (defined below) upon the creator
+and subsequent owner(s) (each and all, an "owner") of an original work of
+authorship and/or a database (each, a "Work").
+
+Certain owners wish to permanently relinquish those rights to a Work for
+the purpose of contributing to a commons of creative, cultural and
+scientific works ("Commons") that the public can reliably and without fear
+of later claims of infringement build upon, modify, incorporate in other
+works, reuse and redistribute as freely as possible in any form whatsoever
+and for any purposes, including without limitation commercial purposes.
+These owners may contribute to the Commons to promote the ideal of a free
+culture and the further production of creative, cultural and scientific
+works, or to gain reputation or greater distribution for their Work in
+part through the use and efforts of others.
+
+For these and/or other purposes and motivations, and without any
+expectation of additional consideration or compensation, the person
+associating CC0 with a Work (the "Affirmer"), to the extent that he or she
+is an owner of Copyright and Related Rights in the Work, voluntarily
+elects to apply CC0 to the Work and publicly distribute the Work under its
+terms, with knowledge of his or her Copyright and Related Rights in the
+Work and the meaning and intended legal effect of CC0 on those rights.
+
+1. Copyright and Related Rights. A Work made available under CC0 may be
+protected by copyright and related or neighboring rights ("Copyright and
+Related Rights"). Copyright and Related Rights include, but are not
+limited to, the following:
+
+  i. the right to reproduce, adapt, distribute, perform, display,
+     communicate, and translate a Work;
+ ii. moral rights retained by the original author(s) and/or performer(s);
+iii. publicity and privacy rights pertaining to a person's image or
+     likeness depicted in a Work;
+ iv. rights protecting against unfair competition in regards to a Work,
+     subject to the limitations in paragraph 4(a), below;
+  v. rights protecting the extraction, dissemination, use and reuse of data
+     in a Work;
+ vi. database rights (such as those arising under Directive 96/9/EC of the
+     European Parliament and of the Council of 11 March 1996 on the legal
+     protection of databases, and under any national implementation
+     thereof, including any amended or successor version of such
+     directive); and
+vii. other similar, equivalent or corresponding rights throughout the
+     world based on applicable law or treaty, and any national
+     implementations thereof.
+
+2. Waiver. To the greatest extent permitted by, but not in contravention
+of, applicable law, Affirmer hereby overtly, fully, permanently,
+irrevocably and unconditionally waives, abandons, and surrenders all of
+Affirmer's Copyright and Related Rights and associated claims and causes
+of action, whether now known or unknown (including existing as well as
+future claims and causes of action), in the Work (i) in all territories
+worldwide, (ii) for the maximum duration provided by applicable law or
+treaty (including future time extensions), (iii) in any current or future
+medium and for any number of copies, and (iv) for any purpose whatsoever,
+including without limitation commercial, advertising or promotional
+purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each
+member of the public at large and to the detriment of Affirmer's heirs and
+successors, fully intending that such Waiver shall not be subject to
+revocation, rescission, cancellation, termination, or any other legal or
+equitable action to disrupt the quiet enjoyment of the Work by the public
+as contemplated by Affirmer's express Statement of Purpose.
+
+3. Public License Fallback. Should any part of the Waiver for any reason
+be judged legally invalid or ineffective under applicable law, then the
+Waiver shall be preserved to the maximum extent permitted taking into
+account Affirmer's express Statement of Purpose. In addition, to the
+extent the Waiver is so judged Affirmer hereby grants to each affected
+person a royalty-free, non transferable, non sublicensable, non exclusive,
+irrevocable and unconditional license to exercise Affirmer's Copyright and
+Related Rights in the Work (i) in all territories worldwide, (ii) for the
+maximum duration provided by applicable law or treaty (including future
+time extensions), (iii) in any current or future medium and for any number
+of copies, and (iv) for any purpose whatsoever, including without
+limitation commercial, advertising or promotional purposes (the
+"License"). The License shall be deemed effective as of the date CC0 was
+applied by Affirmer to the Work. Should any part of the License for any
+reason be judged legally invalid or ineffective under applicable law, such
+partial invalidity or ineffectiveness shall not invalidate the remainder
+of the License, and in such case Affirmer hereby affirms that he or she
+will not (i) exercise any of his or her remaining Copyright and Related
+Rights in the Work or (ii) assert any associated claims and causes of
+action with respect to the Work, in either case contrary to Affirmer's
+express Statement of Purpose.
+
+4. Limitations and Disclaimers.
+
+ a. No trademark or patent rights held by Affirmer are waived, abandoned,
+    surrendered, licensed or otherwise affected by this document.
+ b. Affirmer offers the Work as-is and makes no representations or
+    warranties of any kind concerning the Work, express, implied,
+    statutory or otherwise, including without limitation warranties of
+    title, merchantability, fitness for a particular purpose, non
+    infringement, or the absence of latent or other defects, accuracy, or
+    the present or absence of errors, whether or not discoverable, all to
+    the greatest extent permissible under applicable law.
+ c. Affirmer disclaims responsibility for clearing rights of other persons
+    that may apply to the Work or any use thereof, including without
+    limitation any person's Copyright and Related Rights in the Work.
+    Further, Affirmer disclaims responsibility for obtaining any necessary
+    consents, permissions or other rights required for any use of the
+    Work.
+ d. Affirmer understands and acknowledges that Creative Commons is not a
+    party to this document and has no duty or obligation with respect to
+    this CC0 or use of the Work.
diff --git a/LICENSES/MPL-2.0.txt b/LICENSES/MPL-2.0.txt
new file mode 100644 (file)
index 0000000..ee6256c
--- /dev/null
@@ -0,0 +1,373 @@
+Mozilla Public License Version 2.0
+==================================
+
+1. Definitions
+--------------
+
+1.1. "Contributor"
+    means each individual or legal entity that creates, contributes to
+    the creation of, or owns Covered Software.
+
+1.2. "Contributor Version"
+    means the combination of the Contributions of others (if any) used
+    by a Contributor and that particular Contributor's Contribution.
+
+1.3. "Contribution"
+    means Covered Software of a particular Contributor.
+
+1.4. "Covered Software"
+    means Source Code Form to which the initial Contributor has attached
+    the notice in Exhibit A, the Executable Form of such Source Code
+    Form, and Modifications of such Source Code Form, in each case
+    including portions thereof.
+
+1.5. "Incompatible With Secondary Licenses"
+    means
+
+    (a) that the initial Contributor has attached the notice described
+        in Exhibit B to the Covered Software; or
+
+    (b) that the Covered Software was made available under the terms of
+        version 1.1 or earlier of the License, but not also under the
+        terms of a Secondary License.
+
+1.6. "Executable Form"
+    means any form of the work other than Source Code Form.
+
+1.7. "Larger Work"
+    means a work that combines Covered Software with other material, in 
+    a separate file or files, that is not Covered Software.
+
+1.8. "License"
+    means this document.
+
+1.9. "Licensable"
+    means having the right to grant, to the maximum extent possible,
+    whether at the time of the initial grant or subsequently, any and
+    all of the rights conveyed by this License.
+
+1.10. "Modifications"
+    means any of the following:
+
+    (a) any file in Source Code Form that results from an addition to,
+        deletion from, or modification of the contents of Covered
+        Software; or
+
+    (b) any new file in Source Code Form that contains any Covered
+        Software.
+
+1.11. "Patent Claims" of a Contributor
+    means any patent claim(s), including without limitation, method,
+    process, and apparatus claims, in any patent Licensable by such
+    Contributor that would be infringed, but for the grant of the
+    License, by the making, using, selling, offering for sale, having
+    made, import, or transfer of either its Contributions or its
+    Contributor Version.
+
+1.12. "Secondary License"
+    means either the GNU General Public License, Version 2.0, the GNU
+    Lesser General Public License, Version 2.1, the GNU Affero General
+    Public License, Version 3.0, or any later versions of those
+    licenses.
+
+1.13. "Source Code Form"
+    means the form of the work preferred for making modifications.
+
+1.14. "You" (or "Your")
+    means an individual or a legal entity exercising rights under this
+    License. For legal entities, "You" includes any entity that
+    controls, is controlled by, or is under common control with You. For
+    purposes of this definition, "control" means (a) the power, direct
+    or indirect, to cause the direction or management of such entity,
+    whether by contract or otherwise, or (b) ownership of more than
+    fifty percent (50%) of the outstanding shares or beneficial
+    ownership of such entity.
+
+2. License Grants and Conditions
+--------------------------------
+
+2.1. Grants
+
+Each Contributor hereby grants You a world-wide, royalty-free,
+non-exclusive license:
+
+(a) under intellectual property rights (other than patent or trademark)
+    Licensable by such Contributor to use, reproduce, make available,
+    modify, display, perform, distribute, and otherwise exploit its
+    Contributions, either on an unmodified basis, with Modifications, or
+    as part of a Larger Work; and
+
+(b) under Patent Claims of such Contributor to make, use, sell, offer
+    for sale, have made, import, and otherwise transfer either its
+    Contributions or its Contributor Version.
+
+2.2. Effective Date
+
+The licenses granted in Section 2.1 with respect to any Contribution
+become effective for each Contribution on the date the Contributor first
+distributes such Contribution.
+
+2.3. Limitations on Grant Scope
+
+The licenses granted in this Section 2 are the only rights granted under
+this License. No additional rights or licenses will be implied from the
+distribution or licensing of Covered Software under this License.
+Notwithstanding Section 2.1(b) above, no patent license is granted by a
+Contributor:
+
+(a) for any code that a Contributor has removed from Covered Software;
+    or
+
+(b) for infringements caused by: (i) Your and any other third party's
+    modifications of Covered Software, or (ii) the combination of its
+    Contributions with other software (except as part of its Contributor
+    Version); or
+
+(c) under Patent Claims infringed by Covered Software in the absence of
+    its Contributions.
+
+This License does not grant any rights in the trademarks, service marks,
+or logos of any Contributor (except as may be necessary to comply with
+the notice requirements in Section 3.4).
+
+2.4. Subsequent Licenses
+
+No Contributor makes additional grants as a result of Your choice to
+distribute the Covered Software under a subsequent version of this
+License (see Section 10.2) or under the terms of a Secondary License (if
+permitted under the terms of Section 3.3).
+
+2.5. Representation
+
+Each Contributor represents that the Contributor believes its
+Contributions are its original creation(s) or it has sufficient rights
+to grant the rights to its Contributions conveyed by this License.
+
+2.6. Fair Use
+
+This License is not intended to limit any rights You have under
+applicable copyright doctrines of fair use, fair dealing, or other
+equivalents.
+
+2.7. Conditions
+
+Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
+in Section 2.1.
+
+3. Responsibilities
+-------------------
+
+3.1. Distribution of Source Form
+
+All distribution of Covered Software in Source Code Form, including any
+Modifications that You create or to which You contribute, must be under
+the terms of this License. You must inform recipients that the Source
+Code Form of the Covered Software is governed by the terms of this
+License, and how they can obtain a copy of this License. You may not
+attempt to alter or restrict the recipients' rights in the Source Code
+Form.
+
+3.2. Distribution of Executable Form
+
+If You distribute Covered Software in Executable Form then:
+
+(a) such Covered Software must also be made available in Source Code
+    Form, as described in Section 3.1, and You must inform recipients of
+    the Executable Form how they can obtain a copy of such Source Code
+    Form by reasonable means in a timely manner, at a charge no more
+    than the cost of distribution to the recipient; and
+
+(b) You may distribute such Executable Form under the terms of this
+    License, or sublicense it under different terms, provided that the
+    license for the Executable Form does not attempt to limit or alter
+    the recipients' rights in the Source Code Form under this License.
+
+3.3. Distribution of a Larger Work
+
+You may create and distribute a Larger Work under terms of Your choice,
+provided that You also comply with the requirements of this License for
+the Covered Software. If the Larger Work is a combination of Covered
+Software with a work governed by one or more Secondary Licenses, and the
+Covered Software is not Incompatible With Secondary Licenses, this
+License permits You to additionally distribute such Covered Software
+under the terms of such Secondary License(s), so that the recipient of
+the Larger Work may, at their option, further distribute the Covered
+Software under the terms of either this License or such Secondary
+License(s).
+
+3.4. Notices
+
+You may not remove or alter the substance of any license notices
+(including copyright notices, patent notices, disclaimers of warranty,
+or limitations of liability) contained within the Source Code Form of
+the Covered Software, except that You may alter any license notices to
+the extent required to remedy known factual inaccuracies.
+
+3.5. Application of Additional Terms
+
+You may choose to offer, and to charge a fee for, warranty, support,
+indemnity or liability obligations to one or more recipients of Covered
+Software. However, You may do so only on Your own behalf, and not on
+behalf of any Contributor. You must make it absolutely clear that any
+such warranty, support, indemnity, or liability obligation is offered by
+You alone, and You hereby agree to indemnify every Contributor for any
+liability incurred by such Contributor as a result of warranty, support,
+indemnity or liability terms You offer. You may include additional
+disclaimers of warranty and limitations of liability specific to any
+jurisdiction.
+
+4. Inability to Comply Due to Statute or Regulation
+---------------------------------------------------
+
+If it is impossible for You to comply with any of the terms of this
+License with respect to some or all of the Covered Software due to
+statute, judicial order, or regulation then You must: (a) comply with
+the terms of this License to the maximum extent possible; and (b)
+describe the limitations and the code they affect. Such description must
+be placed in a text file included with all distributions of the Covered
+Software under this License. Except to the extent prohibited by statute
+or regulation, such description must be sufficiently detailed for a
+recipient of ordinary skill to be able to understand it.
+
+5. Termination
+--------------
+
+5.1. The rights granted under this License will terminate automatically
+if You fail to comply with any of its terms. However, if You become
+compliant, then the rights granted under this License from a particular
+Contributor are reinstated (a) provisionally, unless and until such
+Contributor explicitly and finally terminates Your grants, and (b) on an
+ongoing basis, if such Contributor fails to notify You of the
+non-compliance by some reasonable means prior to 60 days after You have
+come back into compliance. Moreover, Your grants from a particular
+Contributor are reinstated on an ongoing basis if such Contributor
+notifies You of the non-compliance by some reasonable means, this is the
+first time You have received notice of non-compliance with this License
+from such Contributor, and You become compliant prior to 30 days after
+Your receipt of the notice.
+
+5.2. If You initiate litigation against any entity by asserting a patent
+infringement claim (excluding declaratory judgment actions,
+counter-claims, and cross-claims) alleging that a Contributor Version
+directly or indirectly infringes any patent, then the rights granted to
+You by any and all Contributors for the Covered Software under Section
+2.1 of this License shall terminate.
+
+5.3. In the event of termination under Sections 5.1 or 5.2 above, all
+end user license agreements (excluding distributors and resellers) which
+have been validly granted by You or Your distributors under this License
+prior to termination shall survive termination.
+
+************************************************************************
+*                                                                      *
+*  6. Disclaimer of Warranty                                           *
+*  -------------------------                                           *
+*                                                                      *
+*  Covered Software is provided under this License on an "as is"       *
+*  basis, without warranty of any kind, either expressed, implied, or  *
+*  statutory, including, without limitation, warranties that the       *
+*  Covered Software is free of defects, merchantable, fit for a        *
+*  particular purpose or non-infringing. The entire risk as to the     *
+*  quality and performance of the Covered Software is with You.        *
+*  Should any Covered Software prove defective in any respect, You     *
+*  (not any Contributor) assume the cost of any necessary servicing,   *
+*  repair, or correction. This disclaimer of warranty constitutes an   *
+*  essential part of this License. No use of any Covered Software is   *
+*  authorized under this License except under this disclaimer.         *
+*                                                                      *
+************************************************************************
+
+************************************************************************
+*                                                                      *
+*  7. Limitation of Liability                                          *
+*  --------------------------                                          *
+*                                                                      *
+*  Under no circumstances and under no legal theory, whether tort      *
+*  (including negligence), contract, or otherwise, shall any           *
+*  Contributor, or anyone who distributes Covered Software as          *
+*  permitted above, be liable to You for any direct, indirect,         *
+*  special, incidental, or consequential damages of any character      *
+*  including, without limitation, damages for lost profits, loss of    *
+*  goodwill, work stoppage, computer failure or malfunction, or any    *
+*  and all other commercial damages or losses, even if such party      *
+*  shall have been informed of the possibility of such damages. This   *
+*  limitation of liability shall not apply to liability for death or   *
+*  personal injury resulting from such party's negligence to the       *
+*  extent applicable law prohibits such limitation. Some               *
+*  jurisdictions do not allow the exclusion or limitation of           *
+*  incidental or consequential damages, so this exclusion and          *
+*  limitation may not apply to You.                                    *
+*                                                                      *
+************************************************************************
+
+8. Litigation
+-------------
+
+Any litigation relating to this License may be brought only in the
+courts of a jurisdiction where the defendant maintains its principal
+place of business and such litigation shall be governed by laws of that
+jurisdiction, without reference to its conflict-of-law provisions.
+Nothing in this Section shall prevent a party's ability to bring
+cross-claims or counter-claims.
+
+9. Miscellaneous
+----------------
+
+This License represents the complete agreement concerning the subject
+matter hereof. If any provision of this License is held to be
+unenforceable, such provision shall be reformed only to the extent
+necessary to make it enforceable. Any law or regulation which provides
+that the language of a contract shall be construed against the drafter
+shall not be used to construe this License against a Contributor.
+
+10. Versions of the License
+---------------------------
+
+10.1. New Versions
+
+Mozilla Foundation is the license steward. Except as provided in Section
+10.3, no one other than the license steward has the right to modify or
+publish new versions of this License. Each version will be given a
+distinguishing version number.
+
+10.2. Effect of New Versions
+
+You may distribute the Covered Software under the terms of the version
+of the License under which You originally received the Covered Software,
+or under the terms of any subsequent version published by the license
+steward.
+
+10.3. Modified Versions
+
+If you create software not governed by this License, and you want to
+create a new license for such software, you may create and use a
+modified version of this License if you rename the license and remove
+any references to the name of the license steward (except to note that
+such modified license differs from this License).
+
+10.4. Distributing Source Code Form that is Incompatible With Secondary
+Licenses
+
+If You choose to distribute Source Code Form that is Incompatible With
+Secondary Licenses under the terms of this version of the License, the
+notice described in Exhibit B of this License must be attached.
+
+Exhibit A - Source Code Form License Notice
+-------------------------------------------
+
+  This Source Code Form is subject to the terms of the Mozilla Public
+  License, v. 2.0. If a copy of the MPL was not distributed with this
+  file, You can obtain one at https://mozilla.org/MPL/2.0/.
+
+If it is not possible or desirable to put the notice in a particular
+file, then You may include the notice in a location (such as a LICENSE
+file in a relevant directory) where a recipient would be likely to look
+for such a notice.
+
+You may add additional accurate notices of copyright ownership.
+
+Exhibit B - "Incompatible With Secondary Licenses" Notice
+---------------------------------------------------------
+
+  This Source Code Form is "Incompatible With Secondary Licenses", as
+  defined by the Mozilla Public License, v. 2.0.
diff --git a/README.markdown b/README.markdown
new file mode 100644 (file)
index 0000000..3fe0c20
--- /dev/null
@@ -0,0 +1,32 @@
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+# 🆔🗃 Vocab
+
+A dictionary of terms.
+
+## Data Files
+
+The X·M·L files in `data/` provide the source data for the ontology.
+The format is bespoke (see `DTD`) and not intended for general
+  interchange, but it is mostly just a minor simplification on top of
+  [the R·D·F ⅌ X·M·L serialization of Owl][OWL-RDF].
+
+Files are organized into folders by type and then given a name
+  reminiscent of the “local” identifier for the term, with two notable
+  changes :⁠—
+
+- All colons (`:`) are replaced with broken bars (`¦`).
+
+- Parens (`(` and `)`) which surround a term are replaced with
+    underscores (`_`).
+
+These ease the use of the files in Make.
+
+Additional files pertaining to the website are found in `site/`.
+The build system is [⛩📰 书社][SHUSHE], included as a Git submodule.
+To build the site (to `public/`), just run `make`.
+
+[OWL-RDF]: <https://www.w3.org/TR/owl2-mapping-to-rdf/>
+[SHUSHE]: <https://git.ladys.computer/Shushe>
diff --git a/data/annotation_properties/owl¦backwardCompatibleWith b/data/annotation_properties/owl¦backwardCompatibleWith
new file mode 100644 (file)
index 0000000..c0ecc21
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE AnnotationProperty SYSTEM "../../DTD">
+<AnnotationProperty>
+       <label xml:lang="en">backward‐compatible with</label>
+       <comment xml:lang="en">
+               <p>
+                       An ontology which is a prior version of this ontology, yet still compatible with it.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(OWL2)" fragment="a_backwardCompatibleWith"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="owl:Ontology"/>
+       </domain>
+       <range>
+               <resource name="owl:Ontology"/>
+       </range>
+</AnnotationProperty>
diff --git a/data/annotation_properties/owl¦deprecated b/data/annotation_properties/owl¦deprecated
new file mode 100644 (file)
index 0000000..5fb891c
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE AnnotationProperty SYSTEM "../../DTD">
+<AnnotationProperty>
+       <label xml:lang="en">deprecated</label>
+       <comment xml:lang="en">
+               <p>
+                       When the value is <value datatype="xsd:boolean">true</value>, indicates that this thing is deprecated.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(OWL2)" fragment="a_deprecated"/>
+       </isDefinedBy>
+</AnnotationProperty>
diff --git a/data/annotation_properties/owl¦incompatibleWith b/data/annotation_properties/owl¦incompatibleWith
new file mode 100644 (file)
index 0000000..40aed05
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE AnnotationProperty SYSTEM "../../DTD">
+<AnnotationProperty>
+       <label xml:lang="en">incompatible with</label>
+       <comment xml:lang="en">
+               <p>
+                       An ontology which is a prior version of this ontology and now incompatible with it.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(OWL2)" fragment="a_incompatibleWith"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="owl:Ontology"/>
+       </domain>
+       <range>
+               <resource name="owl:Ontology"/>
+       </range>
+</AnnotationProperty>
diff --git a/data/annotation_properties/owl¦priorVersion b/data/annotation_properties/owl¦priorVersion
new file mode 100644 (file)
index 0000000..020846b
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE AnnotationProperty SYSTEM "../../DTD">
+<AnnotationProperty>
+       <label xml:lang="en">prior version</label>
+       <comment xml:lang="en">
+               <p>
+                       An ontology which is a prior version of this ontology.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(OWL2)" fragment="a_priorVersion"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="owl:Ontology"/>
+       </domain>
+       <range>
+               <resource name="owl:Ontology"/>
+       </range>
+</AnnotationProperty>
diff --git a/data/annotation_properties/owl¦versionInfo b/data/annotation_properties/owl¦versionInfo
new file mode 100644 (file)
index 0000000..ac79cc9
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE AnnotationProperty SYSTEM "../../DTD">
+<AnnotationProperty>
+       <label xml:lang="en">version info</label>
+       <comment xml:lang="en">
+               <p>
+                       A description of the version of this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(OWL2)" fragment="a_versionInfo"/>
+       </isDefinedBy>
+</AnnotationProperty>
diff --git a/data/annotation_properties/rdfs¦comment b/data/annotation_properties/rdfs¦comment
new file mode 100644 (file)
index 0000000..7ee7a65
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE AnnotationProperty SYSTEM "../../DTD">
+<AnnotationProperty>
+       <label xml:lang="en">comment</label>
+       <comment xml:lang="en">
+               <p>
+                       An informative comment, or description, of this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(RDF11-SCHEMA)" fragment="ch_comment"/>
+       </isDefinedBy>
+       <isDefinedBy>
+               <SpecificResource source="(OWL2)" fragment="a_comment"/>
+       </isDefinedBy>
+</AnnotationProperty>
diff --git a/data/annotation_properties/rdfs¦isDefinedBy b/data/annotation_properties/rdfs¦isDefinedBy
new file mode 100644 (file)
index 0000000..2b60f68
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE AnnotationProperty SYSTEM "../../DTD">
+<AnnotationProperty>
+       <label xml:lang="en">is defined by</label>
+       <comment xml:lang="en">
+               <p>
+                       A resource which defines this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(RDF11-SCHEMA)" fragment="ch_isdefinedby"/>
+       </isDefinedBy>
+       <isDefinedBy>
+               <SpecificResource source="(OWL2)" fragment="a_isDefinedBy"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="rdfs:seeAlso"/>
+       </subPropertyOf>
+</AnnotationProperty>
diff --git a/data/annotation_properties/rdfs¦label b/data/annotation_properties/rdfs¦label
new file mode 100644 (file)
index 0000000..ec7f5a4
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE AnnotationProperty SYSTEM "../../DTD">
+<AnnotationProperty>
+       <label xml:lang="en">label</label>
+       <comment xml:lang="en">
+               <p>
+                       A descriptive label for this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(RDF11-SCHEMA)" fragment="ch_label"/>
+       </isDefinedBy>
+       <isDefinedBy>
+               <SpecificResource source="(OWL2)" fragment="a_label"/>
+       </isDefinedBy>
+</AnnotationProperty>
diff --git a/data/annotation_properties/rdfs¦seeAlso b/data/annotation_properties/rdfs¦seeAlso
new file mode 100644 (file)
index 0000000..859bc46
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE AnnotationProperty SYSTEM "../../DTD">
+<AnnotationProperty>
+       <label xml:lang="en">see also</label>
+       <comment xml:lang="en">
+               <p>
+                       A resource which may provide more information about this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(RDF11-SCHEMA)" fragment="ch_seealso"/>
+       </isDefinedBy>
+       <isDefinedBy>
+               <SpecificResource source="(OWL2)" fragment="a_seeAlso"/>
+       </isDefinedBy>
+</AnnotationProperty>
diff --git a/data/annotation_properties/rdf¦first b/data/annotation_properties/rdf¦first
new file mode 100644 (file)
index 0000000..0fe765c
--- /dev/null
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE AnnotationProperty SYSTEM "../../DTD">
+<AnnotationProperty>
+       <label xml:lang="en">first</label>
+       <comment xml:lang="en">
+               <p>
+                       The first element in this <ref target="rdf:List">List</ref>.
+               </p>
+               <p>
+                       <ptr target="rdf:first"/> and <ptr target="rdf:rest"/> are defined as annotation properties; they cannot be reasoned about.
+                       This is because <ptr target="rdf:List"/>s are themselves used for ontology definition, and assigning them semantics beyond this is, at the very least, conceptually murky.
+                       It is better to use other mechanisms of conveying ordered lists when the contents of those lists need to be accessible to reasoners.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(RDF11-SCHEMA)" fragment="ch_first"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="rdf:List"/>
+       </domain>
+</AnnotationProperty>
diff --git a/data/annotation_properties/rdf¦object b/data/annotation_properties/rdf¦object
new file mode 100644 (file)
index 0000000..b503c5d
--- /dev/null
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE AnnotationProperty SYSTEM "../../DTD">
+<AnnotationProperty>
+       <label xml:lang="en">has object</label>
+       <comment xml:lang="en">
+               <p>
+                       An object of this <ref target="rdf:Statement">Statement</ref>.
+               </p>
+               <p>
+                       This property is defined as an annotation property (i·e it cannot be formally reasoned about) because it is could point to either literal or nonliteral values.
+                       Formal reification of R·D·F graphs which allows for reasoning about objects would require disambiguating between those with literal objects and those with nonliteral objects.
+               </p>
+               <p>
+                       Typically a Statement has only one object, but this is not formally constrained.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(RDF11-SCHEMA)" fragment="ch_object"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="rdf:Statement"/>
+       </domain>
+</AnnotationProperty>
diff --git a/data/annotation_properties/rdf¦predicate b/data/annotation_properties/rdf¦predicate
new file mode 100644 (file)
index 0000000..f192a70
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE AnnotationProperty SYSTEM "../../DTD">
+<AnnotationProperty>
+       <label xml:lang="en">has predicate</label>
+       <comment xml:lang="en">
+               <p>
+                       A predicate of this <ref target="rdf:Statement">Statement</ref>.
+               </p>
+               <p>
+                       Typically a Statement has only one predicate, but this is not formally constrained.
+               </p>
+               <p>
+                       This property is defined as an annotation property for parity with <ptr target="rdf:object"/>, even tho its value should always be a named object.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(RDF11-SCHEMA)" fragment="ch_predicate"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="rdf:Statement"/>
+       </domain>
+</AnnotationProperty>
diff --git a/data/annotation_properties/rdf¦rest b/data/annotation_properties/rdf¦rest
new file mode 100644 (file)
index 0000000..f57fff4
--- /dev/null
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE AnnotationProperty SYSTEM "../../DTD">
+<AnnotationProperty>
+       <label xml:lang="en">rest</label>
+       <comment xml:lang="en">
+               <p>
+                       The remaining elements in this <ref target="rdf:List">List</ref>, as another List.
+               </p>
+               <p>
+                       <ptr target="rdf:first"/> and <ptr target="rdf:rest"/> are defined as annotation properties; they cannot be reasoned about.
+                       This is because <ptr target="rdf:List"/>s are themselves used for ontology definition, and assigning them semantics beyond this is, at the very least, conceptually murky.
+                       It is better to use other mechanisms of conveying ordered lists when the contents of those lists need to be accessible to reasoners.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(RDF11-SCHEMA)" fragment="ch_rest"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="rdf:List"/>
+       </domain>
+       <range>
+               <resource name="rdf:List"/>
+       </range>
+</AnnotationProperty>
diff --git a/data/annotation_properties/rdf¦subject b/data/annotation_properties/rdf¦subject
new file mode 100644 (file)
index 0000000..0464d83
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE AnnotationProperty SYSTEM "../../DTD">
+<AnnotationProperty>
+       <label xml:lang="en">has subject</label>
+       <comment xml:lang="en">
+               <p>
+                       A subject of this <ref target="rdf:Statement">Statement</ref>.
+               </p>
+               <p>
+                       Typically a Statement has only one subject, but this is not formally constrained.
+               </p>
+               <p>
+                       This property is defined as an annotation property for parity with <ptr target="rdf:object"/>, even tho its value should always be an object.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(RDF11-SCHEMA)" fragment="ch_subject"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="rdf:Statement"/>
+       </domain>
+</AnnotationProperty>
diff --git a/data/annotation_properties/shacl¦declare b/data/annotation_properties/shacl¦declare
new file mode 100644 (file)
index 0000000..d8728ee
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE AnnotationProperty SYSTEM "../../DTD">
+<AnnotationProperty>
+       <label xml:lang="en">declares</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="shacl:PrefixDeclaration">Prefix Declaration</ref> which is declared by this <resource name="owl:Ontology"/>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SHACL)" fragment="dfn-prefix-declarations"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="owl:Ontology"/>
+       </domain>
+       <range>
+               <resource name="shacl:PrefixDeclaration"/>
+       </range>
+</AnnotationProperty>
diff --git a/data/annotation_properties/skos¦altLabel b/data/annotation_properties/skos¦altLabel
new file mode 100644 (file)
index 0000000..226bac9
--- /dev/null
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE AnnotationProperty SYSTEM "../../DTD">
+<AnnotationProperty>
+       <label xml:lang="en">alternative label</label>
+       <comment xml:lang="en">
+               <p>
+                       An alternative label for this thing.
+               </p>
+               <p>
+                       <ptr target="(SKOS)"/> enforces the following integrety conditions on this property :⁠—
+               </p>
+               <list>
+                       <item>
+                               <p>
+                                       A thing cannot have the same value for both this property and <ptr target="skos:prefLabel"/>.
+                               </p>
+                               <p>
+                                       A thing cannot have the same value for both this property and <ptr target="skos:hiddenLabel"/>.
+                               </p>
+                       </item>
+               </list>
+               <p>
+                       <ptr target="(SKOS)"/> also specifies that the <ref target="skos:literalForm">literal forms</ref> of any <ref target="skosxl:altLabel">alternative</ref> <ref target="skosxl:Label">Labels</ref> for a thing can also be inferred to be values for this property on that thing.
+                       This relationship is not expressible in Owl.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SKOS)" fragment="altLabel"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="rdfs:label"/>
+       </subPropertyOf>
+       <range>
+               <resource name="rdf:PlainLiteral"/>
+       </range>
+</AnnotationProperty>
diff --git a/data/annotation_properties/skos¦changeNote b/data/annotation_properties/skos¦changeNote
new file mode 100644 (file)
index 0000000..22d6e38
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE AnnotationProperty SYSTEM "../../DTD">
+<AnnotationProperty>
+       <label xml:lang="en">change note</label>
+       <comment xml:lang="en">
+               <p>
+                       A note regarding (fine‐grained) changes made to this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SKOS)" fragment="changeNote"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="skos:note"/>
+       </subPropertyOf>
+</AnnotationProperty>
diff --git a/data/annotation_properties/skos¦definition b/data/annotation_properties/skos¦definition
new file mode 100644 (file)
index 0000000..7df9f72
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE AnnotationProperty SYSTEM "../../DTD">
+<AnnotationProperty>
+       <label xml:lang="en">definition</label>
+       <comment xml:lang="en">
+               <p>
+                       A note regarding the definition of this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SKOS)" fragment="definition"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="skos:note"/>
+       </subPropertyOf>
+</AnnotationProperty>
diff --git a/data/annotation_properties/skos¦editorialNote b/data/annotation_properties/skos¦editorialNote
new file mode 100644 (file)
index 0000000..7520a3b
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE AnnotationProperty SYSTEM "../../DTD">
+<AnnotationProperty>
+       <label xml:lang="en">editorial note</label>
+       <comment xml:lang="en">
+               <p>
+                       An editorial or administrative note regarding this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SKOS)" fragment="editorialNote"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="skos:note"/>
+       </subPropertyOf>
+</AnnotationProperty>
diff --git a/data/annotation_properties/skos¦example b/data/annotation_properties/skos¦example
new file mode 100644 (file)
index 0000000..6c93e0e
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE AnnotationProperty SYSTEM "../../DTD">
+<AnnotationProperty>
+       <label xml:lang="en">example</label>
+       <comment xml:lang="en">
+               <p>
+                       A note providing an example usage of this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SKOS)" fragment="example"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="skos:note"/>
+       </subPropertyOf>
+</AnnotationProperty>
diff --git a/data/annotation_properties/skos¦hiddenLabel b/data/annotation_properties/skos¦hiddenLabel
new file mode 100644 (file)
index 0000000..cfaba03
--- /dev/null
@@ -0,0 +1,43 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE AnnotationProperty SYSTEM "../../DTD">
+<AnnotationProperty>
+       <label xml:lang="en">hidden label</label>
+       <comment xml:lang="en">
+               <p>
+                       A hidden label for this thing.
+               </p>
+               <p>
+                       Hidden labels are labels which are not recommended for use, but which might never·the·less identify a thing, especially after taking into account, for example, common mispellings.
+               </p>
+               <p>
+                       <ptr target="(SKOS)"/> enforces the following integrety conditions on this property :⁠—
+               </p>
+               <list>
+                       <item>
+                               <p>
+                                       A thing cannot have the same value for both this property and <ptr target="skos:prefLabel"/>.
+                               </p>
+                               <p>
+                                       A thing cannot have the same value for both this property and <ptr target="skos:altLabel"/>.
+                               </p>
+                       </item>
+               </list>
+               <p>
+                       <ptr target="(SKOS)"/> also specifies that the <ref target="skos:literalForm">literal forms</ref> of any <ref target="skosxl:hiddenLabel">hidden</ref> <ref target="skosxl:Label">Labels</ref> for a thing can also be inferred to be values for this property on that thing.
+                       This relationship is not expressible in Owl.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SKOS)" fragment="hiddenLabel"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="rdfs:label"/>
+       </subPropertyOf>
+       <range>
+               <resource name="rdf:PlainLiteral"/>
+       </range>
+</AnnotationProperty>
diff --git a/data/annotation_properties/skos¦historyNote b/data/annotation_properties/skos¦historyNote
new file mode 100644 (file)
index 0000000..0714665
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE AnnotationProperty SYSTEM "../../DTD">
+<AnnotationProperty>
+       <label xml:lang="en">history note</label>
+       <comment xml:lang="en">
+               <p>
+                       A note regarding the (broad) history of this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SKOS)" fragment="historyNote"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="skos:note"/>
+       </subPropertyOf>
+</AnnotationProperty>
diff --git a/data/annotation_properties/skos¦note b/data/annotation_properties/skos¦note
new file mode 100644 (file)
index 0000000..ac2187a
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE AnnotationProperty SYSTEM "../../DTD">
+<AnnotationProperty>
+       <label xml:lang="en">note</label>
+       <comment xml:lang="en">
+               <p>
+                       A note regarding this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SKOS)" fragment="note"/>
+       </isDefinedBy>
+</AnnotationProperty>
diff --git a/data/annotation_properties/skos¦prefLabel b/data/annotation_properties/skos¦prefLabel
new file mode 100644 (file)
index 0000000..5e08cb1
--- /dev/null
@@ -0,0 +1,43 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE AnnotationProperty SYSTEM "../../DTD">
+<AnnotationProperty>
+       <label xml:lang="en">preferred label</label>
+       <comment xml:lang="en">
+               <p>
+                       A primary or preferred label for this thing.
+               </p>
+               <p>
+                       <ptr target="(SKOS)"/> enforces the following integrety conditions on this property :⁠—
+               </p>
+               <list>
+                       <item>
+                               <p>
+                                       A thing can only have a single preferred label in a given language.
+                               </p>
+                               <p>
+                                       A thing cannot have the same value for both this property and <ptr target="skos:altLabel"/>.
+                               </p>
+                               <p>
+                                       A thing cannot have the same value for both this property and <ptr target="skos:hiddenLabel"/>.
+                               </p>
+                       </item>
+               </list>
+               <p>
+                       <ptr target="(SKOS)"/> also specifies that the <ref target="skos:literalForm">literal forms</ref> of any <ref target="skosxl:prefLabel">preferred</ref> <ref target="skosxl:Label">Labels</ref> for a thing can also be inferred to be values for this property on that thing.
+                       This relationship is not expressible in Owl.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SKOS)" fragment="prefLabel"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="rdfs:label"/>
+       </subPropertyOf>
+       <range>
+               <resource name="rdf:PlainLiteral"/>
+       </range>
+</AnnotationProperty>
diff --git a/data/annotation_properties/skos¦scopeNote b/data/annotation_properties/skos¦scopeNote
new file mode 100644 (file)
index 0000000..628ce13
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE AnnotationProperty SYSTEM "../../DTD">
+<AnnotationProperty>
+       <label xml:lang="en">scope note</label>
+       <comment xml:lang="en">
+               <p>
+                       A note regarding the scope or applicability of this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SKOS)" fragment="scopeNote"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="skos:note"/>
+       </subPropertyOf>
+</AnnotationProperty>
diff --git a/data/annotation_properties/vocabstatus¦term_status b/data/annotation_properties/vocabstatus¦term_status
new file mode 100644 (file)
index 0000000..3427746
--- /dev/null
@@ -0,0 +1,53 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE AnnotationProperty SYSTEM "../../DTD">
+<AnnotationProperty>
+       <label xml:lang="en">has status</label>
+       <comment xml:lang="en">
+               <p>
+                       A <resource name="xsd:string"/> which indicates the status.
+               </p>
+               <p>
+                       <ptr target="(VOCAB-STATUS)"/> notes that this property might “more properly” have been modelled as taking I·R·I¦s, perhaps of instances of a “vocab status” class, but it uses one of a small handful of string values instead.
+                       As it is an annotation property (and not able to be reasoned about regardless), the use of strings is not practically problematic.
+               </p>
+               <p>
+                       Four values have broad usage :⁠—
+               </p>
+               <list>
+                       <item>
+                               <p>
+                                       <value datatype="xsd:string">unstable</value> indicates that the usage and documentation for a thing are liable to change arbitrarily in the future.
+                               </p>
+                       </item>
+                       <item>
+                               <p>
+                                       <value datatype="xsd:string">testing</value> indicates that the usage and documentation for a thing are fairly settled, but may still change with implementation experience or due to unanticipated factors.
+                               </p>
+                       </item>
+                       <item>
+                               <p>
+                                       <value datatype="xsd:string">stable</value> indicates that the usage and documentation for a thing is settled and not expected to change drastically.
+                               </p>
+                       </item>
+                       <item>
+                               <p>
+                                       <value datatype="xsd:string">archaic</value> indicates that a term is not considered bestpractice anymore and the use of other terms, when possible, is preferable.
+                               </p>
+                       </item>
+               </list>
+               <p>
+                       This ontology also makes use of a fifth value, <value datatype="xsd:string">plumbing</value>, which indicates that a term exists only for the purposes of ontology definition or clarity of explanation.
+                       Plumbing terms should be considered especially unstable and making direct use of them is discouraged.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(VOCAB-STATUS)"/>
+       </isDefinedBy>
+       <range>
+               <resource name="xsd:string"/>
+       </range>
+</AnnotationProperty>
diff --git a/data/classes/anno¦Annotation b/data/classes/anno¦Annotation
new file mode 100644 (file)
index 0000000..a4ac7b0
--- /dev/null
@@ -0,0 +1,33 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Annotation</label>
+       <comment xml:lang="en">
+               <p>
+                       A usually‐purposeful association of bodies and·or <ref target="anno:Motivation">Motivations</ref> with another thing.
+               </p>
+               <p>
+                       Annotations, in their most common uses, link resources to other resources, with the resources being linked from provided as their <ref target="anno:hasBody">bodies</ref> and the resources being linked to provided as their <ref target="anno:hasTarget">targets</ref>.
+                       The Annotation as a whole may be <ref target="anno:motivatedBy">motivated by</ref> a Motivation.
+                       When an Annotation is motivated by a Motivation, bodies might not be present (if the Motivation provides all the necessary information itself).
+               </p>
+               <p>
+                       Despite the name, it¦s important to understand that an Annotation is essentially just a motivated collection of links, and this class may be used anywhere a motivated collection of links is desired.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(ANNO)" fragment="annotation"/>
+       </isDefinedBy>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="anno:hasTarget"/>
+                       </onProperty>
+                       <minCardinality>1</minCardinality>
+               </Restriction>
+       </subClassOf>
+</Class>
diff --git a/data/classes/anno¦CssSelector b/data/classes/anno¦CssSelector
new file mode 100644 (file)
index 0000000..7bb778c
--- /dev/null
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">C·S·S Selector</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="anno:Selector">Selector</ref> which describes an area of interest in another thing using a C·S·S selector string, its <ref target="rdf:value">value</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(ANNO)" fragment="cssselector"/>
+       </isDefinedBy>
+       <subClassOf>
+               <resource name="anno:Selector"/>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="rdf:value"/>
+                       </onProperty>
+                       <cardinality>1</cardinality>
+               </Restriction>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="rdf:value"/>
+                       </onProperty>
+                       <allValuesFrom>
+                               <resource name="xsd:string"/>
+                       </allValuesFrom>
+               </Restriction>
+       </subClassOf>
+</Class>
diff --git a/data/classes/anno¦DataPositionSelector b/data/classes/anno¦DataPositionSelector
new file mode 100644 (file)
index 0000000..6317247
--- /dev/null
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Data Position Selector</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="anno:Selector">Selector</ref> which describes an area of interest in another thing using <ref target="anno:start">start</ref> and <ref target="anno:end">end</ref> values, interpreted as positions in a byte stream.
+               </p>
+               <p>
+                       Position 0 is the position preceding the first byte, position 1 is the position after the first byte but before the second, and so on.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(ANNO)" fragment="datapositionselector"/>
+       </isDefinedBy>
+       <subClassOf>
+               <resource name="anno:Selector"/>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="anno:start"/>
+                       </onProperty>
+                       <cardinality>1</cardinality>
+               </Restriction>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="anno:end"/>
+                       </onProperty>
+                       <cardinality>1</cardinality>
+               </Restriction>
+       </subClassOf>
+</Class>
diff --git a/data/classes/anno¦Direction b/data/classes/anno¦Direction
new file mode 100644 (file)
index 0000000..f5320b5
--- /dev/null
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Direction</label>
+       <comment xml:lang="en">
+               <p>
+                       A base text direction.
+               </p>
+               <p>
+                       This class has only three instances :⁠— <ptr target="anno:ltrDirection"/>, <ptr target="anno:rtlDirection"/>, and <ptr target="anno:autoDirection"/>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(ANNO)" fragment="direction"/>
+       </isDefinedBy>
+       <equivalentClass>
+               <Class>
+                       <oneOf>
+                               <resource name="anno:autoDirection"/>
+                               <resource name="anno:ltrDirection"/>
+                               <resource name="anno:rtlDirection"/>
+                       </oneOf>
+               </Class>
+       </equivalentClass>
+</Class>
diff --git a/data/classes/anno¦FragmentSelector b/data/classes/anno¦FragmentSelector
new file mode 100644 (file)
index 0000000..fe84645
--- /dev/null
@@ -0,0 +1,71 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Fragment Selector</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="anno:Selector">Selector</ref> which describes the area of interest which results from interpreting its <ref target="rdf:value">value</ref> as an I·R·I fragment.
+               </p>
+               <p>
+                       It is recommended that a <ptr target="dcterms:conformsTo"/> property provide a relevant specification describing the correct interpretation of the fragment identifier.
+                       This ontology recommends the following values :⁠—
+               </p>
+               <table>
+                       <row role="label">
+                               <cell>Specification</cell>
+                               <cell>Specified Behaviour</cell>
+                       </row>
+                       <row>
+                               <cell role="label"><ptr target="(RFC5147)"/></cell>
+                               <cell>Fragment identifiers for plaintext resources</cell>
+                       </row>
+                       <row>
+                               <cell role="label"><ptr target="(RFC7303)"/></cell>
+                               <cell>Fragment identifiers for X·M·L resources (including X·H·T·M·L)</cell>
+                       </row>
+                       <row>
+                               <cell role="label"><ptr target="(HTML)"/></cell>
+                               <cell>Fragment identifiers for H·T·M·L resources</cell>
+                       </row>
+                       <row>
+                               <cell role="label"><ptr target="(SVG2)"/></cell>
+                               <cell>Fragment identifiers for S·V·G resources</cell>
+                       </row>
+                       <row>
+                               <cell role="label"><ptr target="(MEDIA-FRAGS)"/></cell>
+                               <cell>Fragment identifiers for multimedia resources</cell>
+                       </row>
+               </table>
+               <p>
+                       Note that above values are <em>not</em> the same as specified by <ptr target="(ANNO)"/>, which favours old, legacy R·F·C¦s in many instances.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(ANNO)" fragment="fragmentselector"/>
+       </isDefinedBy>
+       <subClassOf>
+               <resource name="anno:Selector"/>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="rdf:value"/>
+                       </onProperty>
+                       <cardinality>1</cardinality>
+               </Restriction>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="rdf:value"/>
+                       </onProperty>
+                       <allValuesFrom>
+                               <resource name="xsd:string"/>
+                       </allValuesFrom>
+               </Restriction>
+       </subClassOf>
+</Class>
diff --git a/data/classes/anno¦HttpRequestState b/data/classes/anno¦HttpRequestState
new file mode 100644 (file)
index 0000000..e7f21cd
--- /dev/null
@@ -0,0 +1,41 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">H·T·T·P Request State</label>
+       <comment xml:lang="en">
+               <p>
+                       A set of H·T·T·P headers which, together, indicate a certain state when sent as part of an H·T·T·P request.
+               </p>
+               <p>
+                       The actual H·T·T·P headers themselves are provided as the <ref target="rdf:value">value</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(ANNO)" fragment="httprequeststate"/>
+       </isDefinedBy>
+       <subClassOf>
+               <resource name="anno:State"/>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="rdf:value"/>
+                       </onProperty>
+                       <cardinality>1</cardinality>
+               </Restriction>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="rdf:value"/>
+                       </onProperty>
+                       <allValuesFrom>
+                               <resource name="xsd:string"/>
+                       </allValuesFrom>
+               </Restriction>
+       </subClassOf>
+</Class>
diff --git a/data/classes/anno¦Motivation b/data/classes/anno¦Motivation
new file mode 100644 (file)
index 0000000..6b352ca
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Motivation</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="skos:Concept">Concept</ref> which describes a motivation behind creating a thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(ANNO)" fragment="motivation"/>
+       </isDefinedBy>
+       <subClassOf>
+               <resource name="skos:Concept"/>
+       </subClassOf>
+</Class>
diff --git a/data/classes/anno¦RangeSelector b/data/classes/anno¦RangeSelector
new file mode 100644 (file)
index 0000000..77ea2c6
--- /dev/null
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Range Selector</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="anno:Selector">Selector</ref> which describes an area of interest in another thing by making reference to other Selectors.
+               </p>
+               <p>
+                       The selection includes everything from the beginning of the <ref target="anno:hasStartSelector">start selector</ref> thru to (but not including) the beginning of the <ref target="anno:hasEndSelector">end selector</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(ANNO)" fragment="rangeselector"/>
+       </isDefinedBy>
+       <subClassOf>
+               <resource name="anno:Selector"/>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="anno:hasStartSelector"/>
+                       </onProperty>
+                       <cardinality>1</cardinality>
+               </Restriction>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="anno:hasEndSelector"/>
+                       </onProperty>
+                       <cardinality>1</cardinality>
+               </Restriction>
+       </subClassOf>
+</Class>
diff --git a/data/classes/anno¦ResourceSelection b/data/classes/anno¦ResourceSelection
new file mode 100644 (file)
index 0000000..a6356f7
--- /dev/null
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Resource Selection</label>
+       <comment xml:lang="en">
+               <p>
+                       A thing which identifies part, or all, of a different thing, potentially in a particular state.
+               </p>
+               <p>
+                       The properties <ptr target="anno:hasSelector"/> and <ptr target="anno:hasState"/> may be used to narrow the selection; if not provided, the entire resource in all of its states is selected.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(ANNO)" fragment="resourceselection"/>
+       </isDefinedBy>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="anno:hasSource"/>
+                       </onProperty>
+                       <cardinality>1</cardinality>
+               </Restriction>
+       </subClassOf>
+</Class>
diff --git a/data/classes/anno¦Selector b/data/classes/anno¦Selector
new file mode 100644 (file)
index 0000000..7b72de6
--- /dev/null
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Selector</label>
+       <comment xml:lang="en">
+               <p>
+                       A thing which describes an area of interest in another thing.
+               </p>
+               <p>
+                       This class is primarily intended to be subclassed, not used directly.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(ANNO)" fragment="selector"/>
+       </isDefinedBy>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="anno:refinedBy"/>
+                       </onProperty>
+                       <allValuesFrom>
+                               <resource name="anno:Selector"/>
+                       </allValuesFrom>
+               </Restriction>
+       </subClassOf>
+</Class>
diff --git a/data/classes/anno¦SpecificResource b/data/classes/anno¦SpecificResource
new file mode 100644 (file)
index 0000000..a617ddb
--- /dev/null
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Specific Resource</label>
+       <comment xml:lang="en">
+               <p>
+                       A contextual <ref target="anno:ResourceSelection">Resource Selection</ref>.
+               </p>
+               <p>
+                       Specific Resources may <ref target="anno:hasScope">have scopes</ref> or <ref target="anno:hasPurpose">purposes</ref> and are generally created to address a particular need, for example the creation of an <ref target="anno:Annotation">Annotation</ref>.
+                       For selections of resources which are not specific in this way, use an ordinary Resource Selection.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(ANNO)" fragment="specificresource"/>
+       </isDefinedBy>
+       <subClassOf>
+               <resource name="anno:ResourceSelection"/>
+       </subClassOf>
+</Class>
diff --git a/data/classes/anno¦State b/data/classes/anno¦State
new file mode 100644 (file)
index 0000000..35a6009
--- /dev/null
@@ -0,0 +1,35 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">State</label>
+       <comment xml:lang="en">
+               <p>
+                       A thing which describes the intended state of another thing, as needed to retrieve a correct representation.
+               </p>
+               <p>
+                       This class is primarily intended to be subclassed, not used directly.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(ANNO)" fragment="state"/>
+       </isDefinedBy>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="anno:refinedBy"/>
+                       </onProperty>
+                       <allValuesFrom>
+                               <Class>
+                                       <unionOf>
+                                               <resource name="anno:Selector"/>
+                                               <resource name="anno:State"/>
+                                       </unionOf>
+                               </Class>
+                       </allValuesFrom>
+               </Restriction>
+       </subClassOf>
+</Class>
diff --git a/data/classes/anno¦TextPositionSelector b/data/classes/anno¦TextPositionSelector
new file mode 100644 (file)
index 0000000..e3d5f04
--- /dev/null
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Text Position Selector</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="anno:Selector">Selector</ref> which describes an area of interest in another thing using <ref target="anno:start">start</ref> and <ref target="anno:end">end</ref> values, interpreted as positions in a character stream.
+               </p>
+               <p>
+                       Position 0 is the position preceding the first character, position 1 is the position after the first character but before the second, and so on.
+                       “Character” here means “Unicode scalar value”, regardless of underlying encoding.
+                       This selector selects on a plaintext character stream; markup must be ignored when selecting.
+                       In X·M·L and H·T·M·L, that means it selects only on the sequence of text nodes in the document, in document order, after all entities have been expanded.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(ANNO)" fragment="textpositionselector"/>
+       </isDefinedBy>
+       <subClassOf>
+               <resource name="anno:Selector"/>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="anno:start"/>
+                       </onProperty>
+                       <cardinality>1</cardinality>
+               </Restriction>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="anno:end"/>
+                       </onProperty>
+                       <cardinality>1</cardinality>
+               </Restriction>
+       </subClassOf>
+</Class>
diff --git a/data/classes/anno¦TextQuoteSelector b/data/classes/anno¦TextQuoteSelector
new file mode 100644 (file)
index 0000000..2474565
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Text Quote Selector</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="anno:Selector">Selector</ref> which describes an area of interest in another thing which matches an <ref target="anno:exact">exact</ref> string.
+               </p>
+               <p>
+                       To disambiguate multiple potential matches, one can also specify text which <ref target="anno:prefix">prefixes</ref> and <ref target="anno:suffix">suffixes</ref> the match.
+                       Text is matched based on Unicode scalar values and is encoding‐agnostic.
+                       Text matching must follow the logical, not rendered, order of the text.
+                       Text must be normalized to plaintext before matching; this selector does not match markup.
+                       In X·M·L and H·T·M·L, that means it selects only on the sequence of text nodes in the document, in document order, after all entities have been expanded.
+               </p>
+               <p>
+                       If there are multiple matches, even after taking into account any prefix or suffix, then this selector selects all of them.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(ANNO)" fragment="textquoteselector"/>
+       </isDefinedBy>
+       <subClassOf>
+               <resource name="anno:Selector"/>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="anno:exact"/>
+                       </onProperty>
+                       <cardinality>1</cardinality>
+               </Restriction>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="anno:prefix"/>
+                       </onProperty>
+                       <maxCardinality>1</maxCardinality>
+               </Restriction>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="anno:suffix"/>
+                       </onProperty>
+                       <maxCardinality>1</maxCardinality>
+               </Restriction>
+       </subClassOf>
+</Class>
diff --git a/data/classes/anno¦TimeState b/data/classes/anno¦TimeState
new file mode 100644 (file)
index 0000000..8179771
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Time State</label>
+       <comment xml:lang="en">
+               <p>
+                       A state which a resource inhabited at a particular time (or times).
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(ANNO)" fragment="timestate"/>
+       </isDefinedBy>
+       <subClassOf>
+               <resource name="anno:State"/>
+       </subClassOf>
+</Class>
diff --git a/data/classes/anno¦XPathSelector b/data/classes/anno¦XPathSelector
new file mode 100644 (file)
index 0000000..5c21225
--- /dev/null
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">X·Path Selector</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="anno:Selector">Selector</ref> which describes an area of interest in another thing using an X·Path selector string, its <ref target="rdf:value">value</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(ANNO)" fragment="xpathselector"/>
+       </isDefinedBy>
+       <subClassOf>
+               <resource name="anno:Selector"/>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="rdf:value"/>
+                       </onProperty>
+                       <cardinality>1</cardinality>
+               </Restriction>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="rdf:value"/>
+                       </onProperty>
+                       <allValuesFrom>
+                               <resource name="xsd:string"/>
+                       </allValuesFrom>
+               </Restriction>
+       </subClassOf>
+</Class>
diff --git a/data/classes/awol¦Category b/data/classes/awol¦Category
new file mode 100644 (file)
index 0000000..88e7822
--- /dev/null
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Category</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="skos:Concept">Concept</ref> used for the purposes of categorization.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(AWOL)" fragment="Concept"/>
+       </isDefinedBy>
+       <subClassOf>
+               <resource name="skos:Concept"/>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="awol:term"/>
+                       </onProperty>
+                       <cardinality>1</cardinality>
+               </Restriction>
+       </subClassOf>
+</Class>
diff --git a/data/classes/awol¦Content b/data/classes/awol¦Content
new file mode 100644 (file)
index 0000000..3728772
--- /dev/null
@@ -0,0 +1,153 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Content</label>
+       <comment xml:lang="en">
+               <p>
+                       A thing which represents a specific representation of an information resource: that conveyed by its <ref target="awol:body">body</ref> or by its <ref target="awol:src">source</ref>.
+               </p>
+               <p>
+                       <ptr target="(AWOL)"/> remarks that this class encompasses things similar to “what one can get from a H·T·T·P connection”, in that it has a body as well as other associated metadata (provided by its other properties).
+                       Providing a literal body, rather than a source, is strongly preferred.
+               </p>
+               <p>
+                       The <ref target="awol:type">media type</ref> of the body may be provided, regardless of whether the body is provided literally or via a source.
+                       However, there are restrictions on literal bodies :⁠—
+               </p>
+               <list>
+                       <item>
+                               <p>
+                                       If the media type ends in <code>/xml</code> or <code>+xml</code> (case‐insensitively), then the literal body must not be a <resource name="rdf:PlainLiteral"/>.
+                               </p>
+                       </item>
+                       <item>
+                               <p>
+                                       If the media type is present, but does not end in <code>/xml</code> or <code>+xml</code> (case‐insensitively), then the literal body must not be a <resource name="rdf:XMLLiteral"/>.
+                               </p>
+                       </item>
+                       <item>
+                               <p>
+                                       If the body is a language‐tagged string, then there must not be a media type.
+                               </p>
+                       </item>
+               </list>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(AWOL)" fragment="Content"/>
+       </isDefinedBy>
+       <equivalentClass>
+               <Class>
+                       <unionOf>
+                               <Class>
+                                       <intersectionOf>
+                                               <Restriction>
+                                                       <onProperty>
+                                                               <resource name="awol:body"/>
+                                                       </onProperty>
+                                                       <cardinality>1</cardinality>
+                                               </Restriction>
+                                               <Restriction>
+                                                       <onProperty>
+                                                               <resource name="awol:src"/>
+                                                       </onProperty>
+                                                       <cardinality>0</cardinality>
+                                               </Restriction>
+                                       </intersectionOf>
+                               </Class>
+                               <Class>
+                                       <intersectionOf>
+                                               <Restriction>
+                                                       <onProperty>
+                                                               <resource name="awol:body"/>
+                                                       </onProperty>
+                                                       <cardinality>0</cardinality>
+                                               </Restriction>
+                                               <Restriction>
+                                                       <onProperty>
+                                                               <resource name="awol:src"/>
+                                                       </onProperty>
+                                                       <cardinality>1</cardinality>
+                                               </Restriction>
+                                       </intersectionOf>
+                               </Class>
+                       </unionOf>
+               </Class>
+       </equivalentClass>
+       <subClassOf>
+               <Class>
+                       <unionOf>
+                               <Class>
+                                       <intersectionOf>
+                                               <Restriction>
+                                                       <onProperty>
+                                                               <resource name="awol:type"/>
+                                                       </onProperty>
+                                                       <allValuesFrom>
+                                                               <Datatype>
+                                                                       <onDatatype>
+                                                                               <resource name="xsd:string"/>
+                                                                       </onDatatype>
+                                                                       <withRestrictions>
+                                                                               <pattern>.*[+/][Xx][Mm][Ll]</pattern>
+                                                                       </withRestrictions>
+                                                               </Datatype>
+                                                       </allValuesFrom>
+                                               </Restriction>
+                                               <Restriction>
+                                                       <onProperty>
+                                                               <resource name="awol:body"/>
+                                                       </onProperty>
+                                                       <qualifiedCardinality>0</qualifiedCardinality>
+                                                       <onDataRange>
+                                                               <resource name="rdf:PlainLiteral"/>
+                                                       </onDataRange>
+                                               </Restriction>
+                                       </intersectionOf>
+                               </Class>
+                               <Class>
+                                       <intersectionOf>
+                                               <Restriction>
+                                                       <onProperty>
+                                                               <resource name="awol:type"/>
+                                                       </onProperty>
+                                                       <qualifiedCardinality>0</qualifiedCardinality>
+                                                       <onDataRange>
+                                                               <Datatype>
+                                                                       <onDatatype>
+                                                                               <resource name="xsd:string"/>
+                                                                       </onDatatype>
+                                                                       <withRestrictions>
+                                                                               <pattern>.*[+/][Xx][Mm][Ll]</pattern>
+                                                                       </withRestrictions>
+                                                               </Datatype>
+                                                       </onDataRange>
+                                               </Restriction>
+                                               <Restriction>
+                                                       <onProperty>
+                                                               <resource name="awol:body"/>
+                                                       </onProperty>
+                                                       <allValuesFrom>
+                                                               <Datatype>
+                                                                       <unionOf>
+                                                                               <resource name="xsd:string"/>
+                                                                               <resource name="xsd:base64Binary"/>
+                                                                       </unionOf>
+                                                               </Datatype>
+                                                       </allValuesFrom>
+                                               </Restriction>
+                                       </intersectionOf>
+                               </Class>
+                               <Restriction>
+                                       <onProperty>
+                                               <resource name="awol:type"/>
+                                       </onProperty>
+                                       <cardinality>0</cardinality>
+                               </Restriction>
+                       </unionOf>
+               </Class>
+       </subClassOf>
+</Class>
diff --git a/data/classes/awol¦Entry b/data/classes/awol¦Entry
new file mode 100644 (file)
index 0000000..5b0ac0a
--- /dev/null
@@ -0,0 +1,108 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Entry</label>
+       <comment xml:lang="en">
+               <p>
+                       A version of some syndicated information resource.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(AWOL)" fragment="Entry"/>
+       </isDefinedBy>
+       <subClassOf>
+               <resource name="awol:FeedOrEntry"/>
+       </subClassOf>
+       <subClassOf>
+               <Class>
+                       <unionOf>
+                               <Restriction>
+                                       <onProperty>
+                                               <resource name="awol:author"/>
+                                       </onProperty>
+                                       <minCardinality>1</minCardinality>
+                               </Restriction>
+                               <Restriction>
+                                       <onProperty>
+                                               <resource name="awol:source"/>
+                                       </onProperty>
+                                       <someValuesFrom>
+                                               <Class>
+                                                       <intersectionOf>
+                                                               <resource name="awol:Feed"/>
+                                                               <Restriction>
+                                                                       <onProperty>
+                                                                               <resource name="awol:author"/>
+                                                                       </onProperty>
+                                                                       <minCardinality>1</minCardinality>
+                                                               </Restriction>
+                                                       </intersectionOf>
+                                               </Class>
+                                       </someValuesFrom>
+                               </Restriction>
+                       </unionOf>
+               </Class>
+       </subClassOf>
+       <subClassOf>
+               <Class>
+                       <unionOf>
+                               <Restriction>
+                                       <onProperty>
+                                               <resource name="awol:content"/>
+                                       </onProperty>
+                                       <cardinality>1</cardinality>
+                               </Restriction>
+                               <Restriction>
+                                       <onProperty>
+                                               <resource name="rel:alternate"/>
+                                       </onProperty>
+                                       <minCardinality>1</minCardinality>
+                               </Restriction>
+                       </unionOf>
+               </Class>
+       </subClassOf>
+       <subClassOf>
+               <Class>
+                       <unionOf>
+                               <Restriction>
+                                       <onProperty>
+                                               <resource name="awol:summary"/>
+                                       </onProperty>
+                                       <cardinality>1</cardinality>
+                               </Restriction>
+                               <Restriction>
+                                       <onProperty>
+                                               <resource name="awol:content"/>
+                                       </onProperty>
+                                       <someValuesFrom>
+                                               <Restriction>
+                                                       <onProperty>
+                                                               <resource name="awol:body"/>
+                                                       </onProperty>
+                                                       <someValuesFrom>
+                                                               <Datatype>
+                                                                       <unionOf>
+                                                                               <resource name="rdf:PlainLiteral"/>
+                                                                               <resource name="rdf:XMLLiteral"/>
+                                                                       </unionOf>
+                                                               </Datatype>
+                                                       </someValuesFrom>
+                                               </Restriction>
+                                       </someValuesFrom>
+                               </Restriction>
+                       </unionOf>
+               </Class>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="awol:summary"/>
+                       </onProperty>
+                       <maxCardinality>1</maxCardinality>
+               </Restriction>
+       </subClassOf>
+</Class>
diff --git a/data/classes/awol¦Feed b/data/classes/awol¦Feed
new file mode 100644 (file)
index 0000000..d95ac99
--- /dev/null
@@ -0,0 +1,77 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Feed</label>
+       <comment xml:lang="en">
+               <p>
+                       A version of a syndication of information resources.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(AWOL)" fragment="Feed"/>
+       </isDefinedBy>
+       <subClassOf>
+               <resource name="awol:FeedOrEntry"/>
+       </subClassOf>
+       <subClassOf>
+               <Class>
+                       <unionOf>
+                               <Restriction>
+                                       <onProperty>
+                                               <resource name="awol:author"/>
+                                       </onProperty>
+                                       <minCardinality>1</minCardinality>
+                               </Restriction>
+                               <Restriction>
+                                       <onProperty>
+                                               <resource name="awol:contains"/>
+                                       </onProperty>
+                                       <allValuesFrom>
+                                               <Restriction>
+                                                       <onProperty>
+                                                               <resource name="awol:author"/>
+                                                       </onProperty>
+                                                       <minCardinality>1</minCardinality>
+                                               </Restriction>
+                                       </allValuesFrom>
+                               </Restriction>
+                       </unionOf>
+               </Class>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="awol:generator"/>
+                       </onProperty>
+                       <maxCardinality>1</maxCardinality>
+               </Restriction>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="awol:icon"/>
+                       </onProperty>
+                       <maxCardinality>1</maxCardinality>
+               </Restriction>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="awol:logo"/>
+                       </onProperty>
+                       <maxCardinality>1</maxCardinality>
+               </Restriction>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="awol:subtitle"/>
+                       </onProperty>
+                       <maxCardinality>1</maxCardinality>
+               </Restriction>
+       </subClassOf>
+</Class>
diff --git a/data/classes/awol¦FeedOrEntry b/data/classes/awol¦FeedOrEntry
new file mode 100644 (file)
index 0000000..6a6bd93
--- /dev/null
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Feed Or Entry</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ptr target="awol:Feed"/> or <ptr target="awol:Entry"/>.
+               </p>
+               <p>
+                       This class only exists to make it easier to make statements about Feeds and Entries both.
+               </p>
+               <p>
+                       <ptr target="(AWOL)"/> requires that both Feeds and Entries have a <ref target="awol:title">title</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(AWOL)" fragment="FeedOrEntry"/>
+       </isDefinedBy>
+       <equivalentClass>
+               <Class>
+                       <unionOf>
+                               <resource name="awol:Feed"/>
+                               <resource name="awol:Entry"/>
+                       </unionOf>
+               </Class>
+       </equivalentClass>
+       <subClassOf>
+               <resource name="awol:Version"/>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="awol:title"/>
+                       </onProperty>
+                       <cardinality>1</cardinality>
+               </Restriction>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="awol:rights"/>
+                       </onProperty>
+                       <maxCardinality>1</maxCardinality>
+               </Restriction>
+       </subClassOf>
+</Class>
diff --git a/data/classes/awol¦Generator b/data/classes/awol¦Generator
new file mode 100644 (file)
index 0000000..cbc85da
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Generator</label>
+       <comment xml:lang="en">
+               <p>
+                       A software <ref target="foaf:Agent">Agent</ref> capable of generating some kind of thing.
+               </p>
+               <p>
+                       This probably refers most accurately to a specific running instance of a piece of software (likely a <ptr target="dcmitype:Service"/>), not the abstract software or its code (a <ptr target="dcmitype:Software"/>), as the latter is not an Agent (software cannot act without being instantiated).
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(AWOL)" fragment="Generator"/>
+       </isDefinedBy>
+       <subClassOf>
+               <resource name="awol:GeneratorOrPerson"/>
+       </subClassOf>
+</Class>
diff --git a/data/classes/awol¦GeneratorOrPerson b/data/classes/awol¦GeneratorOrPerson
new file mode 100644 (file)
index 0000000..170d3e5
--- /dev/null
@@ -0,0 +1,43 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Generator Or Person</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ptr target="awol:Generator"/> or <ptr target="awol:Person"/>.
+               </p>
+               <p>
+                       This class only exists to make it easier to make statements about Generators and Persons both.
+                       It isn¦t explicitly defined in the <ptr target="(AWOL)"/> documentation, but it does appear in one of its diagrams.
+               </p>
+               <p>
+                       <ptr target="(AWOL)"/> requires that both Generators and Persons have a <ref target="awol:name">name</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(AWOL)"/>
+       </isDefinedBy>
+       <equivalentClass>
+               <Class>
+                       <unionOf>
+                               <resource name="awol:Generator"/>
+                               <resource name="awol:Person"/>
+                       </unionOf>
+               </Class>
+       </equivalentClass>
+       <subClassOf>
+               <resource name="foaf:Agent"/>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="awol:name"/>
+                       </onProperty>
+                       <minCardinality>1</minCardinality>
+               </Restriction>
+       </subClassOf>
+</Class>
diff --git a/data/classes/awol¦HTML b/data/classes/awol¦HTML
new file mode 100644 (file)
index 0000000..d71058c
--- /dev/null
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">H·T·M·L Content</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="awol:TextContent">Text Content</ref> which has an H·T·M·L <ref target="awol:body">body</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(AWOL)" fragment="HTML"/>
+       </isDefinedBy>
+       <equivalentClass>
+               <Class>
+                       <intersectionOf>
+                               <resource name="awol:Content"/>
+                               <Restriction>
+                                       <onProperty>
+                                               <resource name="awol:body"/>
+                                       </onProperty>
+                                       <someValuesFrom>
+                                               <resource name="xsd:string"/>
+                                       </someValuesFrom>
+                               </Restriction>
+                               <Restriction>
+                                       <onProperty>
+                                               <resource name="awol:type"/>
+                                       </onProperty>
+                                       <someValuesFrom>
+                                               <Datatype>
+                                                       <onDatatype>
+                                                               <resource name="xsd:string"/>
+                                                       </onDatatype>
+                                                       <withRestrictions>
+                                                               <pattern>[Tt][Ee][Xx][Tt]/[Hh][Tt][Mm][Ll]</pattern>
+                                                       </withRestrictions>
+                                               </Datatype>
+                                       </someValuesFrom>
+                               </Restriction>
+                       </intersectionOf>
+               </Class>
+       </equivalentClass>
+       <subClassOf>
+               <resource name="awol:TextContent"/>
+       </subClassOf>
+</Class>
diff --git a/data/classes/awol¦Link b/data/classes/awol¦Link
new file mode 100644 (file)
index 0000000..071bf13
--- /dev/null
@@ -0,0 +1,58 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Link</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="rdf:Statement">Statement</ref> which points to a named resource.
+               </p>
+               <p>
+                       Unlike <ptr target="rdf:subject"/>, <ptr target="rdf:predicate"/>, and <ptr target="rdf:object"/>, which are defined as annotation properties, a Links <ref target="awol:subject">subject</ref>, <ref target="awol:rel">link relation</ref>, and the thing being <ref target="awol:to">linked to</ref> are defined as object properties, and accordingly can be reasoned about.
+                       (While the latter properties <em>should</em> imply the corresponding ones from the former set, this is not possible to formally specify, and nor is it ontologically significant.)
+               </p>
+               <p>
+                       There is a difference between a Link appearing in an R·D·F graph and the actual (link) relation between subject and thing being linked to itself being asserted.
+                       If the intention is also to assert the statement that a Link is making, it must be formally stated as its own R·D·F triple.
+               </p>
+               <p>
+                       <ptr target="(RFC4287)"/> states that when the link relation of a Link is unspecified in an Atom document, it is taken to mean <ptr target="rel:alternate" type="individual"/>.
+               </p>
+               <p>
+                       Titles of Links should be given with <ptr target="awol:label"/>, not (as <ptr target="(AWOL)"/> would have it) <ptr target="awol:title"/>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(AWOL)" fragment="Link"/>
+       </isDefinedBy>
+       <subClassOf>
+               <resource name="rdf:Statement"/>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="awol:subject"/>
+                       </onProperty>
+                       <cardinality>1</cardinality>
+               </Restriction>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="awol:rel"/>
+                       </onProperty>
+                       <cardinality>1</cardinality>
+               </Restriction>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="awol:to"/>
+                       </onProperty>
+                       <cardinality>1</cardinality>
+               </Restriction>
+       </subClassOf>
+</Class>
diff --git a/data/classes/awol¦Person b/data/classes/awol¦Person
new file mode 100644 (file)
index 0000000..4628422
--- /dev/null
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Person</label>
+       <comment xml:lang="en">
+               <p>
+                       A person, corporation, or similar entity.
+               </p>
+               <p>
+                       Despite the name, this class subclasses <ptr target="contact:SocialEntity"/>, not <ptr target="contact:Person"/>.
+               </p>
+               <p>
+                       <ptr target="(AWOL)"/> requires that Persons have <ref target="awol:email">emails</ref>, but this requirement is not present in <ptr target="(RFC4287)"/> and this ontology does not recognize it.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(AWOL)" fragment="Generator"/>
+       </isDefinedBy>
+       <subClassOf>
+               <resource name="awol:GeneratorOrPerson"/>
+       </subClassOf>
+       <subClassOf>
+               <resource name="contact:SocialEntity"/>
+       </subClassOf>
+</Class>
diff --git a/data/classes/awol¦PlainText b/data/classes/awol¦PlainText
new file mode 100644 (file)
index 0000000..da6a61b
--- /dev/null
@@ -0,0 +1,73 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Plain Text Content</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="awol:TextContent">Text Content</ref> which has a plaintext <ref target="awol:body">body</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(AWOL)" fragment="PlainText"/>
+       </isDefinedBy>
+       <equivalentClass>
+               <Class>
+                       <intersectionOf>
+                               <resource name="awol:Content"/>
+                               <Class>
+                                       <unionOf>
+                                               <Class>
+                                                       <intersectionOf>
+                                                               <Restriction>
+                                                                       <onProperty>
+                                                                               <resource name="awol:body"/>
+                                                                       </onProperty>
+                                                                       <someValuesFrom>
+                                                                               <resource name="xsd:string"/>
+                                                                       </someValuesFrom>
+                                                               </Restriction>
+                                                               <Restriction>
+                                                                       <onProperty>
+                                                                               <resource name="awol:type"/>
+                                                                       </onProperty>
+                                                                       <someValuesFrom>
+                                                                               <Datatype>
+                                                                                       <onDatatype>
+                                                                                               <resource name="xsd:string"/>
+                                                                                       </onDatatype>
+                                                                                       <withRestrictions>
+                                                                                               <pattern>[Tt][Ee][Xx][Tt]/[Pp][Ll][Aa][Ii][Nn]</pattern>
+                                                                                       </withRestrictions>
+                                                                               </Datatype>
+                                                                       </someValuesFrom>
+                                                               </Restriction>
+                                                       </intersectionOf>
+                                               </Class>
+                                               <Restriction>
+                                                       <onProperty>
+                                                               <resource name="awol:body"/>
+                                                       </onProperty>
+                                                       <qualifiedCardinality>0</qualifiedCardinality>
+                                                       <onDataRange>
+                                                               <Datatype>
+                                                                       <unionOf>
+                                                                               <resource name="xsd:string"/>
+                                                                               <resource name="xsd:base64Binary"/>
+                                                                               <resource name="rdf:XMLLiteral"/>
+                                                                       </unionOf>
+                                                               </Datatype>
+                                                       </onDataRange>
+                                               </Restriction>
+                                       </unionOf>
+                               </Class>
+                       </intersectionOf>
+               </Class>
+       </equivalentClass>
+       <subClassOf>
+               <resource name="awol:TextContent"/>
+       </subClassOf>
+</Class>
diff --git a/data/classes/awol¦RelationType b/data/classes/awol¦RelationType
new file mode 100644 (file)
index 0000000..c971091
--- /dev/null
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Relation Type</label>
+       <comment xml:lang="en">
+               <p>
+                       A kind of link relation.
+               </p>
+               <p>
+                       Link relation strings defined by <ptr target="(RFC8288)"/> can be turned into named instances of this class by prepending <code>http://www.iana.org/assignments/relation/</code>.
+                       All Relation Types should also be object properties, but this isn¦t formally enforcable.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(AWOL)" fragment="RelationType"/>
+       </isDefinedBy>
+</Class>
diff --git a/data/classes/awol¦TextContent b/data/classes/awol¦TextContent
new file mode 100644 (file)
index 0000000..9ae97a1
--- /dev/null
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Text Content</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="awol:Content">Content</ref> which has one of the three kinds of textual <ref target="awol:body">bodies</ref> supported in <ptr target="(RFC4287)"/> text constructs.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(AWOL)" fragment="TextContent"/>
+       </isDefinedBy>
+       <equivalentClass>
+               <Class>
+                       <unionOf>
+                               <resource name="awol:PlainText"/>
+                               <resource name="awol:HTML"/>
+                               <resource name="awol:XHTML"/>
+                       </unionOf>
+               </Class>
+       </equivalentClass>
+       <subClassOf>
+               <resource name="awol:Content"/>
+       </subClassOf>
+</Class>
diff --git a/data/classes/awol¦Version b/data/classes/awol¦Version
new file mode 100644 (file)
index 0000000..8a1f973
--- /dev/null
@@ -0,0 +1,37 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Version</label>
+       <comment xml:lang="en">
+               <p>
+                       A version of something.
+               </p>
+               <p>
+                       Following <ptr target="(RFC4287)"/>, Versions must have exactly one <ptr target="awol:id"/>, used to associate related Versions with one another, and one <ptr target="awol:updated"/>, used to determine the most recent Version.
+                       This class may not be suitable as a more general versioning mechanism.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(AWOL)" fragment="Version"/>
+       </isDefinedBy>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="awol:id"/>
+                       </onProperty>
+                       <cardinality>1</cardinality>
+               </Restriction>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="awol:updated"/>
+                       </onProperty>
+                       <cardinality>1</cardinality>
+               </Restriction>
+       </subClassOf>
+</Class>
diff --git a/data/classes/awol¦XHTML b/data/classes/awol¦XHTML
new file mode 100644 (file)
index 0000000..5af7c6b
--- /dev/null
@@ -0,0 +1,53 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">X·H·T·M·L Content</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="awol:TextContent">Text Content</ref> which has an X·H·T·M·L <ref target="awol:body">body</ref>.
+               </p>
+               <p>
+                       In an Atom context, this does <em>not</em> include the wrapping <code>&lt;div&gt;</code>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(AWOL)" fragment="XHTML"/>
+       </isDefinedBy>
+       <equivalentClass>
+               <Class>
+                       <intersectionOf>
+                               <resource name="awol:Content"/>
+                               <Restriction>
+                                       <onProperty>
+                                               <resource name="awol:body"/>
+                                       </onProperty>
+                                       <someValuesFrom>
+                                               <resource name="rdf:XMLLiteral"/>
+                                       </someValuesFrom>
+                               </Restriction>
+                               <Restriction>
+                                       <onProperty>
+                                               <resource name="awol:type"/>
+                                       </onProperty>
+                                       <someValuesFrom>
+                                               <Datatype>
+                                                       <onDatatype>
+                                                               <resource name="xsd:string"/>
+                                                       </onDatatype>
+                                                       <withRestrictions>
+                                                               <pattern>[Aa][Pp][Pp][Ll][Ii][Cc][Aa][Tt][Ii][Oo][Nn]/[Xx][Hh][Tt][Mm][Ll]\+[Xx][Mm][Ll]</pattern>
+                                                       </withRestrictions>
+                                               </Datatype>
+                                       </someValuesFrom>
+                               </Restriction>
+                       </intersectionOf>
+               </Class>
+       </equivalentClass>
+       <subClassOf>
+               <resource name="awol:TextContent"/>
+       </subClassOf>
+</Class>
diff --git a/data/classes/contact¦Address b/data/classes/contact¦Address
new file mode 100644 (file)
index 0000000..da05d09
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Address</label>
+       <comment xml:lang="en">
+               <p>
+                       A mailing (postal) address.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SWAP-PIM)"/>
+       </isDefinedBy>
+</Class>
diff --git a/data/classes/contact¦ContactLocation b/data/classes/contact¦ContactLocation
new file mode 100644 (file)
index 0000000..59a0fd0
--- /dev/null
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Contact Point</label>
+       <comment xml:lang="en">
+               <p>
+                       A place or “mobile situation” which may have an assoicated <ref target="contact:address">address</ref>, <ref target="contact:phone">phone</ref>, <ref target="contact:fax">fax</ref>, or other means of address.
+               </p>
+               <p>
+                       This class does not require any actual physical location; it is more strongly related to <ref target="contact:Person">Persons</ref> and their roles (e·g in an organization) than it is to any physical concept in the real world.
+                       It is meant to encompass the situation where a persons “workplace” might have an associated phone number, email, and mailing address, even when that person works remotely and has no fixed geographic work place.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SWAP-PIM)"/>
+       </isDefinedBy>
+</Class>
diff --git a/data/classes/contact¦Fax b/data/classes/contact¦Fax
new file mode 100644 (file)
index 0000000..3b88a2a
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Fax</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="contact:Phone">Phone</ref> which can receive faxes.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SWAP-PIM)"/>
+       </isDefinedBy>
+       <subClassOf>
+               <resource name="contact:Phone"/>
+       </subClassOf>
+</Class>
diff --git a/data/classes/contact¦Mailbox b/data/classes/contact¦Mailbox
new file mode 100644 (file)
index 0000000..d5888cb
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Mailbox</label>
+       <comment xml:lang="en">
+               <p>
+                       An internet mailbox, presumably one capable of receiving email.
+               </p>
+               <p>
+                       Mailboxes are commonly identified by U·R·I¦s in the <code>mailto:</code> scheme.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SWAP-PIM)"/>
+       </isDefinedBy>
+</Class>
diff --git a/data/classes/contact¦MobilePhone b/data/classes/contact¦MobilePhone
new file mode 100644 (file)
index 0000000..3926069
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Mobile Phone</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="contact:Phone">Phone</ref> which is not tied to a single location.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SWAP-PIM)"/>
+       </isDefinedBy>
+       <subClassOf>
+               <resource name="contact:Phone"/>
+       </subClassOf>
+</Class>
diff --git a/data/classes/contact¦Pager b/data/classes/contact¦Pager
new file mode 100644 (file)
index 0000000..a117418
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Pager</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="contact:Phone">Phone</ref> which acts as a pager.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SWAP-PIM)"/>
+       </isDefinedBy>
+       <subClassOf>
+               <resource name="contact:Phone"/>
+       </subClassOf>
+</Class>
diff --git a/data/classes/contact¦Person b/data/classes/contact¦Person
new file mode 100644 (file)
index 0000000..783f7d4
--- /dev/null
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Person</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="contact:SocialEntity">Social Entity</ref> which is a person.
+               </p>
+               <p>
+                       This class is equivalent to the <ptr target="(FOAF)"/> <ptr target="foaf:Person"/> class, which should generally be used instead.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SWAP-PIM)"/>
+       </isDefinedBy>
+       <equivalentClass>
+               <resource name="foaf:Person"/>
+       </equivalentClass>
+       <subClassOf>
+               <resource name="contact:SocialEntity"/>
+       </subClassOf>
+       <superClassOf>
+               <Restriction>
+                       <onProperty>
+                               <ObjectProperty>
+                                       <inverseOf>
+                                               <resource name="contact:child"/>
+                                       </inverseOf>
+                               </ObjectProperty>
+                       </onProperty>
+                       <someValuesFrom>
+                               <resource name="contact:Person"/>
+                       </someValuesFrom>
+               </Restriction>
+       </superClassOf>
+</Class>
diff --git a/data/classes/contact¦Phone b/data/classes/contact¦Phone
new file mode 100644 (file)
index 0000000..12f48c3
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Phone</label>
+       <comment xml:lang="en">
+               <p>
+                       An endpoint in the public switched telephone system.
+               </p>
+               <p>
+                       Phones are commonly identified by U·R·I¦s in the <code>tel:</code> scheme.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SWAP-PIM)"/>
+       </isDefinedBy>
+</Class>
diff --git a/data/classes/contact¦SocialEntity b/data/classes/contact¦SocialEntity
new file mode 100644 (file)
index 0000000..290df58
--- /dev/null
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Social Entity</label>
+       <comment xml:lang="en">
+               <p>
+                       A thing of the sort “which might have a phone number”.
+               </p>
+               <p>
+                       This class is intended as a broad category for people, organizations, and other entities which might be addressed in a social context, for example over the phone or via post.
+                       The emphasis on sociality distinguishes this class from that of <ref target="foaf:Agent">Agents</ref>, which are defined based on their ability to perform actions.
+               </p>
+               <p>
+                       Despite the above definitions, phone numbers in <ptr target="(SWAP-PIM)"/> are actually generally conceived as properties of <ref target="contact:ContactLocation">Contact Points</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SWAP-PIM)"/>
+       </isDefinedBy>
+</Class>
diff --git a/data/classes/dcmitype¦Collection b/data/classes/dcmitype¦Collection
new file mode 100644 (file)
index 0000000..a5dd643
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Collection</label>
+       <comment xml:lang="en">
+               <p>
+                       An aggregation of things.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/dcmitype/Collection"/>
+       </isDefinedBy>
+</Class>
diff --git a/data/classes/dcmitype¦Dataset b/data/classes/dcmitype¦Dataset
new file mode 100644 (file)
index 0000000..896dfc6
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Dataset</label>
+       <comment xml:lang="en">
+               <p>
+                       Data encoded in a defined structure.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/dcmitype/Dataset"/>
+       </isDefinedBy>
+</Class>
diff --git a/data/classes/dcmitype¦Event b/data/classes/dcmitype¦Event
new file mode 100644 (file)
index 0000000..ab5e952
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Event</label>
+       <comment xml:lang="en">
+               <p>
+                       A nonpersistent, time‐based occurrence.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/dcmitype/Event"/>
+       </isDefinedBy>
+</Class>
diff --git a/data/classes/dcmitype¦Image b/data/classes/dcmitype¦Image
new file mode 100644 (file)
index 0000000..431ea11
--- /dev/null
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Image</label>
+       <comment xml:lang="en">
+               <p>
+                       A visual representation other than text.
+               </p>
+               <p>
+                       Note that motion pictures are considered Images; see also the subclasses <ptr target="dcmitype:MovingImage"/> and <ptr target="dcmitype:StillImage"/>.
+                       <ptr target="(DCMI)"/> includes diagrams and musical notation as kinds of Image.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/dcmitype/Image"/>
+       </isDefinedBy>
+</Class>
diff --git a/data/classes/dcmitype¦InteractiveResource b/data/classes/dcmitype¦InteractiveResource
new file mode 100644 (file)
index 0000000..94e75df
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Interactive Resource</label>
+       <comment xml:lang="en">
+               <p>
+                       A thing requiring interaction from the user to be understood, executed, or experienced.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/dcmitype/InteractiveResource"/>
+       </isDefinedBy>
+</Class>
diff --git a/data/classes/dcmitype¦MovingImage b/data/classes/dcmitype¦MovingImage
new file mode 100644 (file)
index 0000000..79984c9
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Moving Image</label>
+       <comment xml:lang="en">
+               <p>
+                       A series of visual representations imparting an impression of motion when shown in succession.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/dcmitype/MovingImage"/>
+       </isDefinedBy>
+       <subClassOf>
+               <resource name="dcmitype:Image"/>
+       </subClassOf>
+</Class>
diff --git a/data/classes/dcmitype¦PhysicalObject b/data/classes/dcmitype¦PhysicalObject
new file mode 100644 (file)
index 0000000..c4966e1
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Physical Object</label>
+       <comment xml:lang="en">
+               <p>
+                       An inanimate, three‐dimensional object or substance.
+               </p>
+               <p>
+                       <ptr target="(DCMI)"/> remarks that digital representations of, or surrogates for, Physical Objects should use <ptr target="dcmitype:Image"/>, <ptr target="dcmitype:Text"/>, or one of the other types.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/dcmitype/PhysicalObject"/>
+       </isDefinedBy>
+       <subClassOf>
+               <resource name="geo:SpatialThing"/>
+       </subClassOf>
+</Class>
diff --git a/data/classes/dcmitype¦Service b/data/classes/dcmitype¦Service
new file mode 100644 (file)
index 0000000..2673e0f
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Service</label>
+       <comment xml:lang="en">
+               <p>
+                       A system that provides one or more functions.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/dcmitype/Service"/>
+       </isDefinedBy>
+</Class>
diff --git a/data/classes/dcmitype¦Software b/data/classes/dcmitype¦Software
new file mode 100644 (file)
index 0000000..b9b4203
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Software</label>
+       <comment xml:lang="en">
+               <p>
+                       A computer program in source or compiled form.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/dcmitype/Software"/>
+       </isDefinedBy>
+</Class>
diff --git a/data/classes/dcmitype¦Sound b/data/classes/dcmitype¦Sound
new file mode 100644 (file)
index 0000000..5e15185
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Sound</label>
+       <comment xml:lang="en">
+               <p>
+                       A thing which is primarily intended to be heard.
+               </p>
+               <p>
+                       <ptr target="(DCMI)"/> does not have a good mechanism for indicating that content whose primary intention is visual also has an auditory component (e·g that a <ptr target="dcmi:MovingImage"/> has sound); this class is only for things whose <em>primary</em> function is auditory.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/dcmitype/Sound"/>
+       </isDefinedBy>
+</Class>
diff --git a/data/classes/dcmitype¦StillImage b/data/classes/dcmitype¦StillImage
new file mode 100644 (file)
index 0000000..2a42a96
--- /dev/null
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Still Image</label>
+       <comment xml:lang="en">
+               <p>
+                       A static visual representation.
+               </p>
+               <p>
+                       This class should <em>not</em> be used for “images” of text, as the D·C·M·I Type vocabulary is primarily focused on conveying a things <em>purpose</em>, not its transmission medium.
+                       Instead, text (in all mediums) should be classified as <ptr target="dcmitype:Text"/>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/dcmitype/StillImage"/>
+       </isDefinedBy>
+       <subClassOf>
+               <resource name="dcmitype:Image"/>
+       </subClassOf>
+</Class>
diff --git a/data/classes/dcmitype¦Text b/data/classes/dcmitype¦Text
new file mode 100644 (file)
index 0000000..404327a
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Text</label>
+       <comment xml:lang="en">
+               <p>
+                       A thing consisting primarily of words for reading.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/dcmitype/Text"/>
+       </isDefinedBy>
+</Class>
diff --git a/data/classes/dcterms¦Agent b/data/classes/dcterms¦Agent
new file mode 100644 (file)
index 0000000..315160a
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Agent</label>
+       <comment xml:lang="en">
+               <p>
+                       A thing which acts or has the power to act.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/Agent"/>
+       </isDefinedBy>
+       <equivalentClass>
+               <resource name="foaf:Agent"/>
+       </equivalentClass>
+</Class>
diff --git a/data/classes/dcterms¦BibliographicResource b/data/classes/dcterms¦BibliographicResource
new file mode 100644 (file)
index 0000000..db0eddd
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Bibliographic Resource</label>
+       <comment xml:lang="en">
+               <p>
+                       Broadly, any resource which might have a <ref target="dcterms:bibliographicCitation">bibliographic citation</ref>, or which otherwise might be significant in a bibliographic context.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/BibliographicResource"/>
+       </isDefinedBy>
+</Class>
diff --git a/data/classes/dcterms¦FileFormat b/data/classes/dcterms¦FileFormat
new file mode 100644 (file)
index 0000000..f0f0cf6
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">File Format</label>
+       <comment xml:lang="en">
+               <p>
+                       A digital resource format.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/FileFormat"/>
+       </isDefinedBy>
+       <subClassOf>
+               <resource name="dcterms:MediaType"/>
+       </subClassOf>
+</Class>
diff --git a/data/classes/dcterms¦Frequency b/data/classes/dcterms¦Frequency
new file mode 100644 (file)
index 0000000..5c053a3
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Frequency</label>
+       <comment xml:lang="en">
+               <p>
+                       A rate at which something occurs.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/Frequency"/>
+       </isDefinedBy>
+</Class>
diff --git a/data/classes/dcterms¦Jurisdiction b/data/classes/dcterms¦Jurisdiction
new file mode 100644 (file)
index 0000000..4eba2c1
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Jurisdiction</label>
+       <comment xml:lang="en">
+               <p>
+                       An extent or range of judicial, law enforcement, or other authority.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/Jurisdiction"/>
+       </isDefinedBy>
+       <subClassOf>
+               <resource name="dcterms:LocationPeriodOrJurisdiction"/>
+       </subClassOf>
+</Class>
diff --git a/data/classes/dcterms¦LicenseDocument b/data/classes/dcterms¦LicenseDocument
new file mode 100644 (file)
index 0000000..c8e29bc
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">License Document</label>
+       <comment xml:lang="en">
+               <p>
+                       A legal document giving official permission to do something with a resource.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/LicenseDocument"/>
+       </isDefinedBy>
+       <subClassOf>
+               <resource name="dcterms:RightsStatement"/>
+       </subClassOf>
+</Class>
diff --git a/data/classes/dcterms¦LinguisticSystem b/data/classes/dcterms¦LinguisticSystem
new file mode 100644 (file)
index 0000000..b7f2f46
--- /dev/null
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Linguistic System</label>
+       <comment xml:lang="en">
+               <p>
+                       A system of signs, symbols, sounds, gestures, or rules used in communication.
+               </p>
+               <p>
+                       <ptr target="(DCMI)"/> states:
+                       « Written, spoken, sign, and computer languages are linguistic systems. »
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/LinguisticSystem"/>
+       </isDefinedBy>
+</Class>
diff --git a/data/classes/dcterms¦Location b/data/classes/dcterms¦Location
new file mode 100644 (file)
index 0000000..c133aff
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Location</label>
+       <comment xml:lang="en">
+               <p>
+                       A spatial region or named place.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/Location"/>
+       </isDefinedBy>
+       <subClassOf>
+               <resource name="dcterms:LocationPeriodOrJurisdiction"/>
+       </subClassOf>
+</Class>
diff --git a/data/classes/dcterms¦LocationPeriodOrJurisdiction b/data/classes/dcterms¦LocationPeriodOrJurisdiction
new file mode 100644 (file)
index 0000000..72ecd5c
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Location, Period, Or Jurisdiction</label>
+       <comment xml:lang="en">
+               <p>
+                       A location, period of time, or jurisdiction.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/LocationPeriodOrJurisdiction"/>
+       </isDefinedBy>
+</Class>
diff --git a/data/classes/dcterms¦MediaType b/data/classes/dcterms¦MediaType
new file mode 100644 (file)
index 0000000..67a197c
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Media Type</label>
+       <comment xml:lang="en">
+               <p>
+                       A file format or physical medium.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/MediaType"/>
+       </isDefinedBy>
+       <subClassOf>
+               <resource name="dcterms:MediaTypeOrExtent"/>
+       </subClassOf>
+</Class>
diff --git a/data/classes/dcterms¦MediaTypeOrExtent b/data/classes/dcterms¦MediaTypeOrExtent
new file mode 100644 (file)
index 0000000..c21cc3c
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Media Type Or Extent</label>
+       <comment xml:lang="en">
+               <p>
+                       A media type or extent.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/MediaTypeOrExtent"/>
+       </isDefinedBy>
+</Class>
diff --git a/data/classes/dcterms¦MethodOfAccrual b/data/classes/dcterms¦MethodOfAccrual
new file mode 100644 (file)
index 0000000..cc02e69
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Method Of Accrual</label>
+       <comment xml:lang="en">
+               <p>
+                       A method by which resources are added to a collection.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/MethodOfAccrual"/>
+       </isDefinedBy>
+</Class>
diff --git a/data/classes/dcterms¦MethodOfInstruction b/data/classes/dcterms¦MethodOfInstruction
new file mode 100644 (file)
index 0000000..5131f5e
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Method Of Instruction</label>
+       <comment xml:lang="en">
+               <p>
+                       A process that is used to engender knowledge, attitudes, or skills.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/MethodOfInstruction"/>
+       </isDefinedBy>
+</Class>
diff --git a/data/classes/dcterms¦PeriodOfTime b/data/classes/dcterms¦PeriodOfTime
new file mode 100644 (file)
index 0000000..9c457cb
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Period Of Time</label>
+       <comment xml:lang="en">
+               <p>
+                       An interval of time that is named or defined by its start and end dates.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/PeriodOfTime"/>
+       </isDefinedBy>
+       <subClassOf>
+               <resource name="dcterms:LocationPeriodOrJurisdiction"/>
+       </subClassOf>
+</Class>
diff --git a/data/classes/dcterms¦PhysicalMedium b/data/classes/dcterms¦PhysicalMedium
new file mode 100644 (file)
index 0000000..0049141
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Physical Medium</label>
+       <comment xml:lang="en">
+               <p>
+                       A physical material or carrier.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/PhysicalMedium"/>
+       </isDefinedBy>
+       <subClassOf>
+               <resource name="dcterms:MediaType"/>
+       </subClassOf>
+</Class>
diff --git a/data/classes/dcterms¦PhysicalResource b/data/classes/dcterms¦PhysicalResource
new file mode 100644 (file)
index 0000000..cf11d62
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Physical Resource</label>
+       <comment xml:lang="en">
+               <p>
+                       A material thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/PhysicalResource"/>
+       </isDefinedBy>
+       <subClassOf>
+               <resource name="geo:SpatialThing"/>
+       </subClassOf>
+</Class>
diff --git a/data/classes/dcterms¦Policy b/data/classes/dcterms¦Policy
new file mode 100644 (file)
index 0000000..4d40093
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Policy</label>
+       <comment xml:lang="en">
+               <p>
+                       A plan or course of action by an authority, intended to influence and determine decisions, actions, and other matters.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/Policy"/>
+       </isDefinedBy>
+</Class>
diff --git a/data/classes/dcterms¦ProvenanceStatement b/data/classes/dcterms¦ProvenanceStatement
new file mode 100644 (file)
index 0000000..0b9579d
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Provenance Statement</label>
+       <comment xml:lang="en">
+               <p>
+                       Any changes in ownership and custody of a resource since its creation that are significant for its authenticity, integrity, and interpretation.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/ProvenanceStatement"/>
+       </isDefinedBy>
+</Class>
diff --git a/data/classes/dcterms¦RightsStatement b/data/classes/dcterms¦RightsStatement
new file mode 100644 (file)
index 0000000..1fd8244
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Rights Statement</label>
+       <comment xml:lang="en">
+               <p>
+                       A statement about the intellectual property rights held in or over a resource, a legal document giving official permission to do something with a resource, or a statement about access rights.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/RightsStatement"/>
+       </isDefinedBy>
+</Class>
diff --git a/data/classes/dcterms¦SizeOrDuration b/data/classes/dcterms¦SizeOrDuration
new file mode 100644 (file)
index 0000000..002a089
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Size Or Duration</label>
+       <comment xml:lang="en">
+               <p>
+                       A dimension or extent, or a time taken to play or execute.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/SizeOrDuration"/>
+       </isDefinedBy>
+       <subClassOf>
+               <resource name="dcterms:MediaTypeOrExtent"/>
+       </subClassOf>
+</Class>
diff --git a/data/classes/dcterms¦Standard b/data/classes/dcterms¦Standard
new file mode 100644 (file)
index 0000000..104a464
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Standard</label>
+       <comment xml:lang="en">
+               <p>
+                       A reference point against which other things can be evaluated or compared.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/Standard"/>
+       </isDefinedBy>
+</Class>
diff --git a/data/classes/doc¦Work b/data/classes/doc¦Work
new file mode 100644 (file)
index 0000000..da39f72
--- /dev/null
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Work</label>
+       <comment xml:lang="en">
+               <p>
+                       An abstract information thing “of value”, “typically intellectual property”.
+               </p>
+               <p>
+                       Defining works based on their “value”, and specifically, tying them to the concept of property, is pretty sus, and this class isn¦t exactly recommended.
+                       However, it <em>is</em> more general (probably) than <ptr target="foaf:Document"/>, and there are cases (i·e, copyright licensing) where defining some·thing based on the fact that it is a piece of intellectual property might make sense, or at least not be obviously problematic.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SWAP-PIM)"/>
+       </isDefinedBy>
+</Class>
diff --git a/data/classes/foaf¦Agent b/data/classes/foaf¦Agent
new file mode 100644 (file)
index 0000000..556a76c
--- /dev/null
@@ -0,0 +1,33 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Agent</label>
+       <comment xml:lang="en">
+               <p>
+                       A thing which does stuff.
+               </p>
+               <p>
+                       Using more specific classes, like <ref target="foaf:Person">Person</ref> is generally better, but sometimes no more specific class is applicable.
+               </p>
+               <p>
+                       This ontology defines <ref target="foaf:Agent">Agents</ref>, <ref target="foaf:Document">Documents</ref>, and <ref target="foaf:Project">Projects</ref> to be disjoint classes.
+                       This is a bit more restrictive than what <ptr target="(FOAF)"/> defines.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(FOAF)" fragment="term_Agent"/>
+       </isDefinedBy>
+       <equivalentClass>
+               <resource name="dcterms:Agent"/>
+       </equivalentClass>
+       <disjointWith>
+               <resource name="foaf:Document"/>
+       </disjointWith>
+       <disjointWith>
+               <resource name="foaf:Project"/>
+       </disjointWith>
+</Class>
diff --git a/data/classes/foaf¦Document b/data/classes/foaf¦Document
new file mode 100644 (file)
index 0000000..1786df5
--- /dev/null
@@ -0,0 +1,31 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Document</label>
+       <comment xml:lang="en">
+               <p>
+                       A thing which, broadly conceived, is considered a “document”.
+               </p>
+               <p>
+                       This class enjoys wide·spread usage despite the fact that <ref target="https://www.balisage.net/Proceedings/vol5/html/Renear01/BalisageVol5-Renear01.html">there are no documents</ref>.
+                       The question of what it “should be” (or even “is”) used to represent is the sort of thing one studies for five decades and never gets any closer to an answer to.
+               </p>
+               <p>
+                       This ontology defines <ref target="foaf:Agent">Agents</ref>, <ref target="foaf:Document">Documents</ref>, and <ref target="foaf:Project">Projects</ref> to be disjoint classes.
+                       This is a bit more restrictive than what <ptr target="(FOAF)"/> defines.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(FOAF)" fragment="term_Document"/>
+       </isDefinedBy>
+       <disjointWith>
+               <resource name="foaf:Agent"/>
+       </disjointWith>
+       <disjointWith>
+               <resource name="foaf:Project"/>
+       </disjointWith>
+</Class>
diff --git a/data/classes/foaf¦Group b/data/classes/foaf¦Group
new file mode 100644 (file)
index 0000000..4f6848a
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Group</label>
+       <comment xml:lang="en">
+               <p>
+                       An <ref target="foaf:Agent">Agent</ref> which is itself a collection of (zero or more) Agents (its <ref target="foaf:member">members</ref>).
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(FOAF)" fragment="term_Group"/>
+       </isDefinedBy>
+       <subClassOf>
+               <resource name="foaf:Agent"/>
+       </subClassOf>
+</Class>
diff --git a/data/classes/foaf¦Image b/data/classes/foaf¦Image
new file mode 100644 (file)
index 0000000..827500f
--- /dev/null
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Image</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="foaf:Document">Document</ref> which is conveyed as a (still?) image.
+               </p>
+               <p>
+                       This class is <em>not</em> equated with <ptr target="dcmitype:StillImage"/> because it <em>can</em> encompass images of text, where·as the latter <em>should not</em>.
+                       This leaves open the question of what exactly constitutes an “image” in the physical world, but thankfully this class is mostly only ever used for digital images.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(FOAF)" fragment="term_Image"/>
+       </isDefinedBy>
+       <subClassOf>
+               <resource name="foaf:Document"/>
+       </subClassOf>
+</Class>
diff --git a/data/classes/foaf¦OnlineAccount b/data/classes/foaf¦OnlineAccount
new file mode 100644 (file)
index 0000000..179fec1
--- /dev/null
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Online Account</label>
+       <comment xml:lang="en">
+               <p>
+                       A provision of some form of online service (indicated indirectly via its <ref target="foaf:accountServiceHomepage">account service homepage</ref>), at least conceptually, to some <ref target="foaf:Agent">Agent</ref>.
+               </p>
+               <p>
+                       It is assumed that, given an account service home·page and an <ref target="foaf:accountName">account name</ref>, one can easily discover the corresponding Online Account.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(FOAF)" fragment="term_OnlineAccount"/>
+       </isDefinedBy>
+       <hasKey>
+               <resource name="foaf:accountServiceHomepage"/>
+               <resource name="foaf:accountName"/>
+       </hasKey>
+</Class>
diff --git a/data/classes/foaf¦Organization b/data/classes/foaf¦Organization
new file mode 100644 (file)
index 0000000..d762c23
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Organization</label>
+       <comment xml:lang="en">
+               <p>
+                       An <ref target="foaf:Agent">Agent</ref> which corresponds to social instititution.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(FOAF)" fragment="term_Organization"/>
+       </isDefinedBy>
+       <subClassOf>
+               <resource name="foaf:Agent"/>
+       </subClassOf>
+       <subClassOf>
+               <resource name="contact:SocialEntity"/>
+       </subClassOf>
+</Class>
diff --git a/data/classes/foaf¦Person b/data/classes/foaf¦Person
new file mode 100644 (file)
index 0000000..a83a118
--- /dev/null
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Person</label>
+       <comment xml:lang="en">
+               <p>
+                       An <ref target="foaf:Agent">Agent</ref> which is a person.
+               </p>
+               <p>
+                       The precise definition of personhood is intentionally kept vague, but for clarity, this class can include people who are dead, imaginary, and nonhuman.
+                       Following <ptr target="(FOAF)"/>, Persons are <ref target="geo:SpatialThing">Spatial Things</ref>; they are not defined as <ref target="dcmitype:PhysicalResource">Physical Resources</ref> because it is unclear whether amorphous entities (e·g, ghosts) are necessarily “physical”.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(FOAF)" fragment="term_Person"/>
+       </isDefinedBy>
+       <subClassOf>
+               <resource name="foaf:Agent"/>
+       </subClassOf>
+       <subClassOf>
+               <resource name="geo:SpatialThing"/>
+       </subClassOf>
+       <subClassOf>
+               <resource name="contact:SocialEntity"/>
+       </subClassOf>
+</Class>
diff --git a/data/classes/foaf¦Project b/data/classes/foaf¦Project
new file mode 100644 (file)
index 0000000..274ade0
--- /dev/null
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Project</label>
+       <comment xml:lang="en">
+               <p>
+                       A “project”, formal or informal, collective or individual.
+               </p>
+               <p>
+                       Projects are not <ref target="foaf:Document">Documents</ref> (altho they may produce Documents) and nor are they <ref target="foaf:Agent">Agents</ref> (altho they might involve Agents).
+                       This interpretation is a bit more restrictive than what <ptr target="(FOAF)"/> defines; it describes Projects as disjoint only with <ref target="foaf:Person">Persons</ref>, not Agents.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(FOAF)" fragment="term_Project"/>
+       </isDefinedBy>
+       <disjointWith>
+               <resource name="foaf:Agent"/>
+       </disjointWith>
+       <disjointWith>
+               <resource name="foaf:Document"/>
+       </disjointWith>
+</Class>
diff --git a/data/classes/geo¦SpatialThing b/data/classes/geo¦SpatialThing
new file mode 100644 (file)
index 0000000..e87eced
--- /dev/null
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Spatial Thing</label>
+       <comment xml:lang="en">
+               <p>
+                       Some·thing which has a spatial extent (size, shape, location).
+               </p>
+               <p>
+                       <ref target="dcterms:PhysicalResource">Physical Resources</ref> and <ref target="dcmitype:PhysicalObject">Physical Objects</ref> are defined as subclasses, not equivalent classes, because they require materiality.
+                       Spatial Things may be immaterial (ghosts), and even conceptual in nature (for example, geographic boundaries).
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(FOAF)" fragment="term_SpatialThing"/>
+       </isDefinedBy>
+</Class>
diff --git a/data/classes/rdfs¦Container b/data/classes/rdfs¦Container
new file mode 100644 (file)
index 0000000..073df80
--- /dev/null
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Container</label>
+       <comment xml:lang="en">
+               <p>
+                       A collection of zero or more things.
+               </p>
+               <p>
+                       Membership within Containers is indicated through the use of <code>rdf:_$</code> properties, where <code>$</code> is a <em>positive</em> (i·e nonzero) integer with no leading zeroes.
+                       These properties are all considered subproperties of <resource name="rdfs:member"/>, although there are no normative requirements on processors recognizing this fact.
+                       There is no requirement that membership properties be dense; i·e just because a Collection has values for <resource name="rdf:_1"/> and <resource name="rdf:_3"/> does not imply it has a value for <resource name="rdf:_2"/>.
+               </p>
+               <p>
+                       Containers are allowed to contain themselves as members.
+                       The subclasses <ptr target="rdf:Bag"/>, <ptr target="rdf:Seq"/>, and <ptr target="rdf:Alt"/> convey different intentions about the relationship between the items in containers.
+               </p>
+               <p>
+                       Because the relationship between <resource name="rdf:_1"/>, <resource name="rdf:_2"/>, ⁊·c and <resource name="rdfs:member"/> is often implicit, and because there is no upper limit to membership properties or restrictions on their length, Containers can be difficult to reason about.
+                       <ref target="rdf:List">Lists</ref> are a better solution in most cases.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(RDF11-SCHEMA)" fragment="ch_container"/>
+       </isDefinedBy>
+</Class>
diff --git a/data/classes/rdf¦Alt b/data/classes/rdf¦Alt
new file mode 100644 (file)
index 0000000..fe60328
--- /dev/null
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Alt</label>
+       <comment xml:lang="en">
+               <p>
+                       An <ref target="rdfs:Container">Container</ref> whose <ref target="rdfs:member">members</ref> are intended to be interpreted as alternatives.
+               </p>
+               <p>
+                       Whether the alternatives are ranked or unranked is left open to interpretation.
+                       If a default is required, it should be the value given for <resource name="rdf:_1"/>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(RDF11-SCHEMA)" fragment="ch_alt"/>
+       </isDefinedBy>
+</Class>
diff --git a/data/classes/rdf¦Bag b/data/classes/rdf¦Bag
new file mode 100644 (file)
index 0000000..49983a5
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Bag</label>
+       <comment xml:lang="en">
+               <p>
+                       An <ref target="rdfs:Container">Container</ref> whose <ref target="rdfs:member">members</ref> are intended to be interpreted in an unordered fashion.
+               </p>
+               <p>
+                       Despite being unordered, the ordinary container membership properties <resource name="rdf:_1"/>, <resource name="rdf:_2"/>, ⁊·c should still be used.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(RDF11-SCHEMA)" fragment="ch_bag"/>
+       </isDefinedBy>
+</Class>
diff --git a/data/classes/rdf¦List b/data/classes/rdf¦List
new file mode 100644 (file)
index 0000000..066bbc2
--- /dev/null
@@ -0,0 +1,22 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">List</label>
+       <comment xml:lang="en">
+               <p>
+                       A pair structure which is either <ptr target="rdf:nil"/> or which <ref target="rdf:first">has a first element</ref> and which <ref target="rdf:rest">has rest</ref> another List.
+                       The first elements of the List and its transitive non‐Nil rest Lists form the elements of an R·D·F collection.
+               </p>
+               <p>
+                       The description above is more restrictive than the formal ontological definition for Lists, which places no constraints on the number (or presence) of its first and rest properties.
+                       Conformance to these expectations is strongly recommended, but implementations should be aware that some data may take a more flexible approach.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(RDF11-SCHEMA)" fragment="ch_list"/>
+       </isDefinedBy>
+</Class>
diff --git a/data/classes/rdf¦Seq b/data/classes/rdf¦Seq
new file mode 100644 (file)
index 0000000..379b4fd
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Seq</label>
+       <comment xml:lang="en">
+               <p>
+                       An <ref target="rdfs:Container">Container</ref> whose <ref target="rdfs:member">members</ref> are intended to be interpreted in an ordered fashion.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(RDF11-SCHEMA)" fragment="ch_seq"/>
+       </isDefinedBy>
+</Class>
diff --git a/data/classes/rdf¦Statement b/data/classes/rdf¦Statement
new file mode 100644 (file)
index 0000000..82e863e
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Statement</label>
+       <comment xml:lang="en">
+               <p>
+                       An R·D·F statement; i·e a <ref target="rdf:subject">subject</ref>, <ref target="rdf:predicate">predicate</ref>, and <ref target="rdf:object">object</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(RDF11-SCHEMA)" fragment="ch_statement"/>
+       </isDefinedBy>
+</Class>
diff --git a/data/classes/shacl¦PrefixDeclaration b/data/classes/shacl¦PrefixDeclaration
new file mode 100644 (file)
index 0000000..a44f73f
--- /dev/null
@@ -0,0 +1,33 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Prefix Declaration</label>
+       <comment xml:lang="en">
+               <p>
+                       A thing which associates a <ref target="shacl:prefix">prefix</ref> with its associated <ref target="shacl:namespace">name·space</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SHACL)" fragment="dfn-prefix-declarations"/>
+       </isDefinedBy>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="shacl:prefix"/>
+                       </onProperty>
+                       <cardinality>1</cardinality>
+               </Restriction>
+       </subClassOf>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="shacl:namespace"/>
+                       </onProperty>
+                       <cardinality>1</cardinality>
+               </Restriction>
+       </subClassOf>
+</Class>
diff --git a/data/classes/skosxl¦Label b/data/classes/skosxl¦Label
new file mode 100644 (file)
index 0000000..05d029e
--- /dev/null
@@ -0,0 +1,34 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Label</label>
+       <comment xml:lang="en">
+               <p>
+                       A lexical label.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SKOS)" fragment="Label"/>
+       </isDefinedBy>
+       <subClassOf>
+               <Restriction>
+                       <onProperty>
+                               <resource name="skosxl:literalForm"/>
+                       </onProperty>
+                       <cardinality>1</cardinality>
+               </Restriction>
+       </subClassOf>
+       <disjointWith>
+               <resource name="skos:Concept"/>
+       </disjointWith>
+       <disjointWith>
+               <resource name="skos:ConceptScheme"/>
+       </disjointWith>
+       <disjointWith>
+               <resource name="skos:Collection"/>
+       </disjointWith>
+</Class>
diff --git a/data/classes/skos¦Collection b/data/classes/skos¦Collection
new file mode 100644 (file)
index 0000000..72020e9
--- /dev/null
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Collection</label>
+       <comment xml:lang="en">
+               <p>
+                       A group of <ref target="skos:Concept">Concepts</ref>.
+               </p>
+               <p>
+                       The Concepts in a Collection are its <ref target="skos:member">members</ref>.
+                       Collections can also be nested:
+                       They can have members which are other Collections.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SKOS)" fragment="Collection"/>
+       </isDefinedBy>
+       <disjointWith>
+               <resource name="skos:Concept"/>
+       </disjointWith>
+       <disjointWith>
+               <resource name="skos:ConceptScheme"/>
+       </disjointWith>
+</Class>
diff --git a/data/classes/skos¦Concept b/data/classes/skos¦Concept
new file mode 100644 (file)
index 0000000..b5b1119
--- /dev/null
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Concept</label>
+       <comment xml:lang="en">
+               <p>
+                       A unit of thought; the core currency of a knowledge organization system.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SKOS)" fragment="Concept"/>
+       </isDefinedBy>
+       <hasKey>
+               <resource name="skos:inScheme"/>
+               <resource name="skos:notation"/>
+       </hasKey>
+</Class>
diff --git a/data/classes/skos¦ConceptScheme b/data/classes/skos¦ConceptScheme
new file mode 100644 (file)
index 0000000..106c1eb
--- /dev/null
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Concept Scheme</label>
+       <comment xml:lang="en">
+               <p>
+                       An aggregation of one or more <ref target="skos:Concept">Concepts</ref>.
+               </p>
+               <p>
+                       The <ptr target="skos:inScheme"/> property is used to identify the Concept Schemes that a Concept belongs to.
+                       <ptr target="skos:hasTopConcept"/> can additionally be used to link from a Concept Scheme to the “top‐level” concepts it contains.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SKOS)" fragment="ConceptScheme"/>
+       </isDefinedBy>
+       <disjointWith>
+               <resource name="skos:Concept"/>
+       </disjointWith>
+</Class>
diff --git a/data/classes/skos¦OrderedCollection b/data/classes/skos¦OrderedCollection
new file mode 100644 (file)
index 0000000..4ec6394
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Class SYSTEM "../../DTD">
+<Class>
+       <label xml:lang="en">Ordered Collection</label>
+       <comment xml:lang="en">
+               <p>
+                       An ordered <ref target="skos:Collection">Collection</ref> of <ref target="skos:Concept">Concepts</ref>.
+               </p>
+               <p>
+                       The ordering of the <ref target="skos:member">members</ref> of an Ordered Collection is determined by their position within its <ref target="skos:memberList">member list</ref>, but it is not possible to formally reason about this.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SKOS)" fragment="OrderedCollection"/>
+       </isDefinedBy>
+       <subClassOf>
+               <resource name="skos:Collection"/>
+       </subClassOf>
+</Class>
diff --git a/data/datatype_properties/anno¦end b/data/datatype_properties/anno¦end
new file mode 100644 (file)
index 0000000..23f5fac
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty functional="yes">
+       <label xml:lang="en">end</label>
+       <comment xml:lang="en">
+               <p>
+                       The 0‐based end index for this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(ANNO)" fragment="end"/>
+       </isDefinedBy>
+       <range>
+               <resource name="xsd:nonNegativeInteger"/>
+       </range>
+</DatatypeProperty>
diff --git a/data/datatype_properties/anno¦exact b/data/datatype_properties/anno¦exact
new file mode 100644 (file)
index 0000000..4a83792
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty functional="yes">
+       <label xml:lang="en">exact</label>
+       <comment xml:lang="en">
+               <p>
+                       An exact copy, after normalization, of text being selected by this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(ANNO)" fragment="exact"/>
+       </isDefinedBy>
+       <range>
+               <resource name="xsd:string"/>
+       </range>
+</DatatypeProperty>
diff --git a/data/datatype_properties/anno¦prefix b/data/datatype_properties/anno¦prefix
new file mode 100644 (file)
index 0000000..8eb60ec
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty functional="yes">
+       <label xml:lang="en">prefix</label>
+       <comment xml:lang="en">
+               <p>
+                       A snippet of text which occurs, after normalization, immediately preceding the text being selected by this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(ANNO)" fragment="prefix"/>
+       </isDefinedBy>
+       <range>
+               <resource name="xsd:string"/>
+       </range>
+</DatatypeProperty>
diff --git a/data/datatype_properties/anno¦processingLanguage b/data/datatype_properties/anno¦processingLanguage
new file mode 100644 (file)
index 0000000..db77cfd
--- /dev/null
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty functional="yes">
+       <label xml:lang="en">processing language</label>
+       <comment xml:lang="en">
+               <p>
+                       The base language under which this resource should be processed.
+               </p>
+               <p>
+                       This is not necessarily the same as the language of the resource itself; for example, a French phrase in an English dictionary might be <em>in</em> the French language, but <em>processed under</em> English processing rules (for alphebetization, ⁊·c).
+               </p>
+               <p>
+                       <ptr target="(ANNO)"/> only specifies the range of this property as <resource name="xsd:string"/>, but it then additionally requires that it match the expectations of <resource name="xsd:language"/>.
+                       As these datatypes share a value space, it is simpler to just use the latter as its range.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(ANNO)" fragment="processinglanguage"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="dc11:language"/>
+       </subPropertyOf>
+       <range>
+               <resource name="xsd:language"/>
+       </range>
+</DatatypeProperty>
diff --git a/data/datatype_properties/anno¦sourceDate b/data/datatype_properties/anno¦sourceDate
new file mode 100644 (file)
index 0000000..ad1c6c9
--- /dev/null
@@ -0,0 +1,33 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty functional="yes">
+       <label xml:lang="en">source date</label>
+       <comment xml:lang="en">
+               <p>
+                       The time·stamp of this <ref target="anno:TimeState">Time State</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(ANNO)" fragment="sourcedate"/>
+       </isDefinedBy>
+       <domain>
+               <Class>
+                       <intersectionOf>
+                               <resource name="anno:TimeState"/>
+                               <Restriction>
+                                       <onProperty>
+                                               <resource name="anno:sourceDateStart"/>
+                                       </onProperty>
+                                       <cardinality>0</cardinality>
+                               </Restriction>
+                       </intersectionOf>
+               </Class>
+       </domain>
+       <range>
+               <resource name="xsd:dateTime"/>
+       </range>
+</DatatypeProperty>
diff --git a/data/datatype_properties/anno¦sourceDateEnd b/data/datatype_properties/anno¦sourceDateEnd
new file mode 100644 (file)
index 0000000..4e48c22
--- /dev/null
@@ -0,0 +1,33 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty functional="yes">
+       <label xml:lang="en">source date end</label>
+       <comment xml:lang="en">
+               <p>
+                       The time·stamp for the ending of this <ref target="anno:TimeState">Time State</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(ANNO)" fragment="sourcedateend"/>
+       </isDefinedBy>
+       <domain>
+               <Class>
+                       <intersectionOf>
+                               <resource name="anno:TimeState"/>
+                               <Restriction>
+                                       <onProperty>
+                                               <resource name="anno:sourceDateStart"/>
+                                       </onProperty>
+                                       <minCardinality>1</minCardinality>
+                               </Restriction>
+                       </intersectionOf>
+               </Class>
+       </domain>
+       <range>
+               <resource name="xsd:dateTime"/>
+       </range>
+</DatatypeProperty>
diff --git a/data/datatype_properties/anno¦sourceDateStart b/data/datatype_properties/anno¦sourceDateStart
new file mode 100644 (file)
index 0000000..59a184d
--- /dev/null
@@ -0,0 +1,33 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty functional="yes">
+       <label xml:lang="en">source date start</label>
+       <comment xml:lang="en">
+               <p>
+                       The time·stamp for the beginning of this <ref target="anno:TimeState">Time State</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(ANNO)" fragment="sourcedatestart"/>
+       </isDefinedBy>
+       <domain>
+               <Class>
+                       <intersectionOf>
+                               <resource name="anno:TimeState"/>
+                               <Restriction>
+                                       <onProperty>
+                                               <resource name="anno:sourceDateEnd"/>
+                                       </onProperty>
+                                       <minCardinality>1</minCardinality>
+                               </Restriction>
+                       </intersectionOf>
+               </Class>
+       </domain>
+       <range>
+               <resource name="xsd:dateTime"/>
+       </range>
+</DatatypeProperty>
diff --git a/data/datatype_properties/anno¦start b/data/datatype_properties/anno¦start
new file mode 100644 (file)
index 0000000..43ee22d
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty functional="yes">
+       <label xml:lang="en">start</label>
+       <comment xml:lang="en">
+               <p>
+                       The 0‐based start index for this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(ANNO)" fragment="start"/>
+       </isDefinedBy>
+       <range>
+               <resource name="xsd:nonNegativeInteger"/>
+       </range>
+</DatatypeProperty>
diff --git a/data/datatype_properties/anno¦suffix b/data/datatype_properties/anno¦suffix
new file mode 100644 (file)
index 0000000..9e5b57c
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty functional="yes">
+       <label xml:lang="en">suffix</label>
+       <comment xml:lang="en">
+               <p>
+                       A snippet of text which occurs, after normalization, immediately following the text being selected by this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(ANNO)" fragment="suffix"/>
+       </isDefinedBy>
+       <range>
+               <resource name="xsd:string"/>
+       </range>
+</DatatypeProperty>
diff --git a/data/datatype_properties/awol¦body b/data/datatype_properties/awol¦body
new file mode 100644 (file)
index 0000000..01dd89e
--- /dev/null
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty functional="yes">
+       <label xml:lang="en">body</label>
+       <comment xml:lang="en">
+               <p>
+                       The body of this thing.
+               </p>
+               <p>
+                       X·M·L data should be provided as a <resource name="rdf:XMLLiteral"/>; binary data may be provided as a <resource name="xsd:base64Binary"/>.
+                       Language‐tagged values must be interpreted as plaintext; <resource name="xsd:string"/> values may be interpreted as something other than plaintext if this thing has a <ref target="awol:type">media type</ref> which is not a case‐insensitive match for <code>text/plain</code>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(AWOL)" fragment="body"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="rdf:value"/>
+       </subPropertyOf>
+       <domain>
+               <Class>
+                       <intersectionOf>
+                               <Class>
+                                       <complementOf>
+                                               <resource name="awol:Link"/>
+                                       </complementOf>
+                               </Class>
+                               <Restriction>
+                                       <onProperty>
+                                               <resource name="awol:src"/>
+                                       </onProperty>
+                                       <cardinality>0</cardinality>
+                               </Restriction>
+                       </intersectionOf>
+               </Class>
+       </domain>
+       <range>
+               <Datatype>
+                       <unionOf>
+                               <resource name="xsd:base64Binary"/>
+                               <resource name="rdf:PlainLiteral"/>
+                               <resource name="rdf:XMLLiteral"/>
+                       </unionOf>
+               </Datatype>
+       </range>
+</DatatypeProperty>
diff --git a/data/datatype_properties/awol¦generatorVersion b/data/datatype_properties/awol¦generatorVersion
new file mode 100644 (file)
index 0000000..48c26cf
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty functional="yes">
+       <label xml:lang="en">generator version</label>
+       <comment xml:lang="en">
+               <p>
+                       The version of this <ref target="awol:Generator">Generator</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(AWOL)" fragment="generatorVersion"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="doc:version"/>
+       </subPropertyOf>
+       <domain>
+               <resource name="awol:Generator"/>
+       </domain>
+       <range>
+               <resource name="xsd:string"/>
+       </range>
+</DatatypeProperty>
diff --git a/data/datatype_properties/awol¦id b/data/datatype_properties/awol¦id
new file mode 100644 (file)
index 0000000..74c0509
--- /dev/null
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty functional="yes">
+       <label xml:lang="en">i·d</label>
+       <comment xml:lang="en">
+               <p>
+                       An identifier which can be used to associate this <ref target="awol:Version">Version</ref> with other Versions of the same content.
+               </p>
+               <p>
+                       If two Versions have the same i·d, they can be assumed to be versions of each other.
+               </p>
+               <p>
+                       This property is not a subproperty of <ptr target="dcterms:identifier"/> because the identifier is not formally of the Version itself, but of the conceptual object that the Version is a version of.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(AWOL)" fragment="id"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="awol:Version"/>
+       </domain>
+       <range>
+               <resource name="xsd:anyURI"/>
+       </range>
+</DatatypeProperty>
diff --git a/data/datatype_properties/awol¦label b/data/datatype_properties/awol¦label
new file mode 100644 (file)
index 0000000..dbcb9b8
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty functional="yes">
+       <label xml:lang="en">label</label>
+       <comment xml:lang="en">
+               <p>
+                       The preferred human‐readable label for this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(AWOL)" fragment="label"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="dc11:description"/>
+       </subPropertyOf>
+       <range>
+               <resource name="rdf:PlainLiteral"/>
+       </range>
+</DatatypeProperty>
diff --git a/data/datatype_properties/awol¦lang b/data/datatype_properties/awol¦lang
new file mode 100644 (file)
index 0000000..2ea2cb2
--- /dev/null
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty functional="yes">
+       <label xml:lang="en">language</label>
+       <comment xml:lang="en">
+               <p>
+                       The language of the thing this <ref target="awol:Link">Link</ref> is <ref target="awol:to">linking to</ref>.
+               </p>
+               <p>
+                       When the <ref target="awol:rel">link relation</ref> of this Link is <ptr target="rel:alternate" type="individual"/>, the presence of a language implies that the thing being linked to is a translation of the Links <ptr target="awol:subject"/>.
+               </p>
+               <p>
+                       <ptr target="(AWOL)"/> defines the domain of this property as being <ptr target="awol:Content"/> instead, but this appears to be a confusion; the documentation clearly links to the specification for <code>hreflang</code> (a property of Links in <ptr target="(RFC4287)"/>), not language signification in general.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(AWOL)" fragment="lang"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="awol:Link"/>
+       </domain>
+       <range>
+               <resource name="xsd:language"/>
+       </range>
+</DatatypeProperty>
diff --git a/data/datatype_properties/awol¦length b/data/datatype_properties/awol¦length
new file mode 100644 (file)
index 0000000..fc97c4b
--- /dev/null
@@ -0,0 +1,33 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty functional="yes">
+       <label xml:lang="en">length</label>
+       <comment xml:lang="en">
+               <p>
+                       The length in bytes of the thing this <ref target="awol:Link">Link</ref> is <ref target="awol:to">linking to</ref>.
+               </p>
+               <p>
+                       <ptr target="(AWOL)"/> defines the domain of this property as being <ptr target="awol:Content"/> instead, but this appears to be a confusion; <code>length</code> is a property of Links in <ptr target="(RFC4287)"/>.
+                       It also restricts the value of this property to <resource name="xsd:int"/>, but this seems to be an unnecessary limitation.
+               </p>
+               <p>
+                       This property is classified as a subproperty of <ptr target="dc11:format"/>, as extent is considered an aspect of format in <ptr target="(DCMI)"/>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(AWOL)" fragment="length"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="dc11:format"/>
+       </subPropertyOf>
+       <domain>
+               <resource name="awol:Link"/>
+       </domain>
+       <range>
+               <resource name="xsd:integer"/>
+       </range>
+</DatatypeProperty>
diff --git a/data/datatype_properties/awol¦name b/data/datatype_properties/awol¦name
new file mode 100644 (file)
index 0000000..8dadeda
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty functional="yes">
+       <label xml:lang="en">name</label>
+       <comment xml:lang="en">
+               <p>
+                       The preferred human‐readable name for this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(AWOL)" fragment="name"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="foaf:name"/>
+       </subPropertyOf>
+       <range>
+               <resource name="rdf:PlainLiteral"/>
+       </range>
+</DatatypeProperty>
diff --git a/data/datatype_properties/awol¦published b/data/datatype_properties/awol¦published
new file mode 100644 (file)
index 0000000..29f0957
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty functional="yes">
+       <label xml:lang="en">published</label>
+       <comment xml:lang="en">
+               <p>
+                       The date of publication for this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(AWOL)" fragment="published"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="dcterms:issued"/>
+       </subPropertyOf>
+       <range>
+               <resource name="xsd:dateTime"/>
+       </range>
+</DatatypeProperty>
diff --git a/data/datatype_properties/awol¦term b/data/datatype_properties/awol¦term
new file mode 100644 (file)
index 0000000..b31f940
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty functional="yes">
+       <label xml:lang="en">term</label>
+       <comment xml:lang="en">
+               <p>
+                       The literal value used to represent this <ref target="awol:Category">Category</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(AWOL)" fragment="term"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="skos:notation"/>
+       </subPropertyOf>
+       <domain>
+               <resource name="awol:Category"/>
+       </domain>
+       <range>
+               <resource name="xsd:string"/>
+       </range>
+</DatatypeProperty>
diff --git a/data/datatype_properties/awol¦type b/data/datatype_properties/awol¦type
new file mode 100644 (file)
index 0000000..0265f85
--- /dev/null
@@ -0,0 +1,31 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty functional="yes">
+       <label xml:lang="en">media type</label>
+       <comment xml:lang="en">
+               <p>
+                       The media type of this thing.
+               </p>
+               <p>
+                       For things which <ref target="awol:body">have a body</ref>, the media type is the type of that body.
+                       For things which <ref target="awol:src">have a source</ref>, the media type is the type of the source.
+                       For <ref target="awol:Link">Links</ref>, the media type is that of the thing being <ref target="awol:to">linked to</ref>.
+               </p>
+               <p>
+                       Media types should conform to the syntax of <ptr target="(RFC6838)"/> and should be rendered in lowercase.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(AWOL)" fragment="type"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="dc11:format"/>
+       </subPropertyOf>
+       <range>
+               <resource name="xsd:string"/>
+       </range>
+</DatatypeProperty>
diff --git a/data/datatype_properties/awol¦updated b/data/datatype_properties/awol¦updated
new file mode 100644 (file)
index 0000000..a949293
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty functional="yes">
+       <label xml:lang="en">updated</label>
+       <comment xml:lang="en">
+               <p>
+                       The date at which this thing was most recently updated in a way that its publisher considers significant.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(AWOL)" fragment="updated"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="dcterms:modified"/>
+       </subPropertyOf>
+       <range>
+               <resource name="xsd:dateTime"/>
+       </range>
+</DatatypeProperty>
diff --git a/data/datatype_properties/contact¦birthday b/data/datatype_properties/contact¦birthday
new file mode 100644 (file)
index 0000000..5a6a91c
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty functional="yes">
+       <label xml:lang="en">birthday</label>
+       <comment xml:lang="en">
+               <p>
+                       A date of birth for this <ref target="contact:SocialEntity">Social Entity</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SWAP-PIM)"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="contact:SocialEntity"/>
+       </domain>
+       <range>
+               <resource name="xsd:date"/>
+       </range>
+</DatatypeProperty>
diff --git a/data/datatype_properties/contact¦city b/data/datatype_properties/contact¦city
new file mode 100644 (file)
index 0000000..c7e47d9
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty functional="yes">
+       <label xml:lang="en">city</label>
+       <comment xml:lang="en">
+               <p>
+                       The city of this <ref target="contact:Address">Address</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SWAP-PIM)"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="contact:Address"/>
+       </domain>
+       <range>
+               <resource name="xsd:string"/>
+       </range>
+</DatatypeProperty>
diff --git a/data/datatype_properties/contact¦country b/data/datatype_properties/contact¦country
new file mode 100644 (file)
index 0000000..5ad9b4c
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty functional="yes">
+       <label xml:lang="en">country</label>
+       <comment xml:lang="en">
+               <p>
+                       The country of this <ref target="contact:Address">Address</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SWAP-PIM)"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="contact:Address"/>
+       </domain>
+       <range>
+               <resource name="xsd:string"/>
+       </range>
+</DatatypeProperty>
diff --git a/data/datatype_properties/contact¦description b/data/datatype_properties/contact¦description
new file mode 100644 (file)
index 0000000..e426d1c
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty functional="yes">
+       <label xml:lang="en">description</label>
+       <comment xml:lang="en">
+               <p>
+                       A description of this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SWAP-PIM)"/>
+       </isDefinedBy>
+       <equivalentProperty>
+               <resource name="dc11:description"/>
+       </equivalentProperty>
+</DatatypeProperty>
diff --git a/data/datatype_properties/contact¦familyName b/data/datatype_properties/contact¦familyName
new file mode 100644 (file)
index 0000000..758afd0
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty>
+       <label xml:lang="en">family name</label>
+       <comment xml:lang="en">
+               <p>
+                       A “family” or inherited component of this <ref target="contact:Person">Person</ref>s name.
+               </p>
+               <p>
+                       This property is equivalent to the identically‐named property in <ptr target="(FOAF)"/>, which should be used instead.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SWAP-PIM)"/>
+       </isDefinedBy>
+       <equivalentProperty>
+               <resource name="foaf:familyName"/>
+       </equivalentProperty>
+</DatatypeProperty>
diff --git a/data/datatype_properties/contact¦firstName b/data/datatype_properties/contact¦firstName
new file mode 100644 (file)
index 0000000..2073cfb
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty>
+       <label xml:lang="en">first name</label>
+       <comment xml:lang="en">
+               <p>
+                       A first component of this <ref target="contact:Person">Person</ref>s name.
+               </p>
+               <p>
+                       This property is equivalent to the identically‐named property in <ptr target="(FOAF)"/>, which should be used instead.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SWAP-PIM)"/>
+       </isDefinedBy>
+       <equivalentProperty>
+               <resource name="foaf:firstName"/>
+       </equivalentProperty>
+</DatatypeProperty>
diff --git a/data/datatype_properties/contact¦fullName b/data/datatype_properties/contact¦fullName
new file mode 100644 (file)
index 0000000..8c6ba70
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty>
+       <label xml:lang="en">full name</label>
+       <comment xml:lang="en">
+               <p>
+                       A full name of this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SWAP-PIM)"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="foaf:name"/>
+       </subPropertyOf>
+</DatatypeProperty>
diff --git a/data/datatype_properties/contact¦givenName b/data/datatype_properties/contact¦givenName
new file mode 100644 (file)
index 0000000..cd7edd5
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty>
+       <label xml:lang="en">given name</label>
+       <comment xml:lang="en">
+               <p>
+                       A “given” or personal component of this <ref target="contact:Person">Person</ref>s name.
+               </p>
+               <p>
+                       This property is equivalent to the identically‐named property in <ptr target="(FOAF)"/>, which should be used instead.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SWAP-PIM)"/>
+       </isDefinedBy>
+       <equivalentProperty>
+               <resource name="foaf:givenName"/>
+       </equivalentProperty>
+</DatatypeProperty>
diff --git a/data/datatype_properties/contact¦knownAs b/data/datatype_properties/contact¦knownAs
new file mode 100644 (file)
index 0000000..6caedb8
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty>
+       <label xml:lang="en">known as</label>
+       <comment xml:lang="en">
+               <p>
+                       A literal by which this thing is known or identified thru some mechanism.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SWAP-PIM)"/>
+       </isDefinedBy>
+</DatatypeProperty>
diff --git a/data/datatype_properties/contact¦lastName b/data/datatype_properties/contact¦lastName
new file mode 100644 (file)
index 0000000..ee2b1bc
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty>
+       <label xml:lang="en">last name</label>
+       <comment xml:lang="en">
+               <p>
+                       A last component of this <ref target="contact:Person">Person</ref>s name.
+               </p>
+               <p>
+                       This property is equivalent to the identically‐named property in <ptr target="(FOAF)"/>, which should be used instead.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SWAP-PIM)"/>
+       </isDefinedBy>
+       <equivalentProperty>
+               <resource name="foaf:lastName"/>
+       </equivalentProperty>
+</DatatypeProperty>
diff --git a/data/datatype_properties/contact¦middleInitial b/data/datatype_properties/contact¦middleInitial
new file mode 100644 (file)
index 0000000..96750d8
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty>
+       <label xml:lang="en">middle initial</label>
+       <comment xml:lang="en">
+               <p>
+                       A middle initial(s) from this <ref target="contact:Person">Person</ref>s name.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SWAP-PIM)"/>
+       </isDefinedBy>
+</DatatypeProperty>
diff --git a/data/datatype_properties/contact¦middleName b/data/datatype_properties/contact¦middleName
new file mode 100644 (file)
index 0000000..fe89e6f
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty>
+       <label xml:lang="en">middle name</label>
+       <comment xml:lang="en">
+               <p>
+                       A middle component of this <ref target="contact:Person">Person</ref>s name.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SWAP-PIM)"/>
+       </isDefinedBy>
+</DatatypeProperty>
diff --git a/data/datatype_properties/contact¦motherTongue b/data/datatype_properties/contact¦motherTongue
new file mode 100644 (file)
index 0000000..17a0956
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty>
+       <label xml:lang="en">mother tongue</label>
+       <comment xml:lang="en">
+               <p>
+                       A native language of this <ref target="contact:Person">Person</ref>, as identified by <ref target="contact:LanguageCode">Language Code</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SWAP-PIM)"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="contact:Person"/>
+       </domain>
+       <range>
+               <resource name="contact:LanguageCode"/>
+       </range>
+</DatatypeProperty>
diff --git a/data/datatype_properties/contact¦personalSuffix b/data/datatype_properties/contact¦personalSuffix
new file mode 100644 (file)
index 0000000..fcd8b69
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty>
+       <label xml:lang="en">personal suffix</label>
+       <comment xml:lang="en">
+               <p>
+                       A personal suffix associated with this <ref target="contact:Person">Person</ref>s name.
+               </p>
+               <p>
+                       Suffixes include such things as “Sr” and “Jr”.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SWAP-PIM)"/>
+       </isDefinedBy>
+</DatatypeProperty>
diff --git a/data/datatype_properties/contact¦personalTitle b/data/datatype_properties/contact¦personalTitle
new file mode 100644 (file)
index 0000000..9923053
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty>
+       <label xml:lang="en">personal title</label>
+       <comment xml:lang="en">
+               <p>
+                       A personal title associated with this <ref target="contact:Person">Person</ref>.
+               </p>
+               <p>
+                       This property is restricted to personal titles like “Dr” or “Mx”, not titles which are only used within an organization.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SWAP-PIM)"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="foaf:title"/>
+       </subPropertyOf>
+</DatatypeProperty>
diff --git a/data/datatype_properties/contact¦postalCode b/data/datatype_properties/contact¦postalCode
new file mode 100644 (file)
index 0000000..8d77d64
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty functional="yes">
+       <label xml:lang="en">postal code</label>
+       <comment xml:lang="en">
+               <p>
+                       The postal code of this <ref target="contact:Address">Address</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SWAP-PIM)"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="contact:Address"/>
+       </domain>
+       <range>
+               <resource name="xsd:string"/>
+       </range>
+</DatatypeProperty>
diff --git a/data/datatype_properties/contact¦preferredURI b/data/datatype_properties/contact¦preferredURI
new file mode 100644 (file)
index 0000000..10553c9
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty>
+       <label xml:lang="en">preferred I·R·I</label>
+       <comment xml:lang="en">
+               <p>
+                       A preferred I·R·I for identifying this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SWAP-PIM)"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="dcterms:identifier"/>
+       </subPropertyOf>
+       <range>
+               <resource name="xsd:anyURI"/>
+       </range>
+</DatatypeProperty>
diff --git a/data/datatype_properties/contact¦region b/data/datatype_properties/contact¦region
new file mode 100644 (file)
index 0000000..26f7ce3
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty functional="yes">
+       <label xml:lang="en">region</label>
+       <comment xml:lang="en">
+               <p>
+                       The administrative region or subnational unit of this <ref target="contact:Address">Address</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SWAP-PIM)"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="contact:Address"/>
+       </domain>
+       <range>
+               <resource name="xsd:string"/>
+       </range>
+</DatatypeProperty>
diff --git a/data/datatype_properties/contact¦sortName b/data/datatype_properties/contact¦sortName
new file mode 100644 (file)
index 0000000..41d4e16
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty>
+       <label xml:lang="en">sort name</label>
+       <comment xml:lang="en">
+               <p>
+                       A name of this thing as used in some sorting mechanism.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SWAP-PIM)"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="foaf:name"/>
+       </subPropertyOf>
+</DatatypeProperty>
diff --git a/data/datatype_properties/contact¦stateOrProvince b/data/datatype_properties/contact¦stateOrProvince
new file mode 100644 (file)
index 0000000..ddd49c6
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty functional="yes">
+       <label xml:lang="en">state or province</label>
+       <comment xml:lang="en">
+               <p>
+                       The state or province of this <ref target="contact:Address">Address</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SWAP-PIM)"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="contact:region"/>
+       </subPropertyOf>
+       <domain>
+               <resource name="contact:Address"/>
+       </domain>
+       <range>
+               <resource name="xsd:string"/>
+       </range>
+</DatatypeProperty>
diff --git a/data/datatype_properties/contact¦street b/data/datatype_properties/contact¦street
new file mode 100644 (file)
index 0000000..31d4e7d
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty functional="yes">
+       <label xml:lang="en">street</label>
+       <comment xml:lang="en">
+               <p>
+                       The (first) street address line of this <ref target="contact:Address">Address</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SWAP-PIM)"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="contact:Address"/>
+       </domain>
+       <range>
+               <resource name="xsd:string"/>
+       </range>
+</DatatypeProperty>
diff --git a/data/datatype_properties/contact¦street2 b/data/datatype_properties/contact¦street2
new file mode 100644 (file)
index 0000000..7348cc0
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty functional="yes">
+       <label xml:lang="en">street 2</label>
+       <comment xml:lang="en">
+               <p>
+                       The second street address line of this <ref target="contact:Address">Address</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SWAP-PIM)"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="contact:Address"/>
+       </domain>
+       <range>
+               <resource name="xsd:string"/>
+       </range>
+</DatatypeProperty>
diff --git a/data/datatype_properties/contact¦street3 b/data/datatype_properties/contact¦street3
new file mode 100644 (file)
index 0000000..ce7e2bb
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty functional="yes">
+       <label xml:lang="en">street 3</label>
+       <comment xml:lang="en">
+               <p>
+                       The third street address line of this <ref target="contact:Address">Address</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SWAP-PIM)"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="contact:Address"/>
+       </domain>
+       <range>
+               <resource name="xsd:string"/>
+       </range>
+</DatatypeProperty>
diff --git a/data/datatype_properties/contact¦zip b/data/datatype_properties/contact¦zip
new file mode 100644 (file)
index 0000000..c096267
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty functional="yes">
+       <label xml:lang="en">zip</label>
+       <comment xml:lang="en">
+               <p>
+                       The zip code of this <ref target="contact:Address">Address</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SWAP-PIM)"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="contact:postalCode"/>
+       </subPropertyOf>
+       <domain>
+               <resource name="contact:Address"/>
+       </domain>
+       <range>
+               <resource name="xsd:string"/>
+       </range>
+</DatatypeProperty>
diff --git a/data/datatype_properties/dc11¦contributor b/data/datatype_properties/dc11¦contributor
new file mode 100644 (file)
index 0000000..803a312
--- /dev/null
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty>
+       <label xml:lang="en">contributor</label>
+       <comment xml:lang="en">
+               <p>
+                       A name, identifier, or description of an entity which contributed to this thing.
+               </p>
+               <p>
+                       <ptr target="(DCMI)"/> states:
+                       « Typically, the name of a Contributor should be used to indicate the entity. »
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/elements/1.1/contributor"/>
+       </isDefinedBy>
+</DatatypeProperty>
diff --git a/data/datatype_properties/dc11¦coverage b/data/datatype_properties/dc11¦coverage
new file mode 100644 (file)
index 0000000..800206c
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty>
+       <label xml:lang="en">coverage</label>
+       <comment xml:lang="en">
+               <p>
+                       A name, identifier, or description of a spatial or temporal topic of this thing, spatial applicability of this thing, or jurisdiction under which this thing is relevant.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/elements/1.1/coverage"/>
+       </isDefinedBy>
+</DatatypeProperty>
diff --git a/data/datatype_properties/dc11¦creator b/data/datatype_properties/dc11¦creator
new file mode 100644 (file)
index 0000000..1520281
--- /dev/null
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty>
+       <label xml:lang="en">creator</label>
+       <comment xml:lang="en">
+               <p>
+                       A name, identifier, or description of an entity which created this thing.
+               </p>
+               <p>
+                       <ptr target="(DCMI)"/> states:
+                       « Typically, the name of a Creator should be used to indicate the entity. »
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/elements/1.1/creator"/>
+       </isDefinedBy>
+</DatatypeProperty>
diff --git a/data/datatype_properties/dc11¦description b/data/datatype_properties/dc11¦description
new file mode 100644 (file)
index 0000000..c227cb5
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty>
+       <label xml:lang="en">description</label>
+       <comment xml:lang="en">
+               <p>
+                       An account of this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/elements/1.1/description"/>
+       </isDefinedBy>
+</DatatypeProperty>
diff --git a/data/datatype_properties/dc11¦format b/data/datatype_properties/dc11¦format
new file mode 100644 (file)
index 0000000..2b17449
--- /dev/null
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty>
+       <label xml:lang="en">format</label>
+       <comment xml:lang="en">
+               <p>
+                       A file format, physical medium, or physical dimension of this thing.
+               </p>
+               <p>
+                       <ptr target="(DCMI)"/> states:
+                       « Recommended practice is to use a controlled vocabulary where available.
+                       For example, for file formats one could use the list of Internet Media Types [<ref target="https://www.iana.org/assignments/media-types/media-types.xhtml">MIME</ref>]. »
+               </p>
+               <p>
+                       <ptr target="(ANNO)"/> constrains the range of this property to <resource name="xsd:string"/>, but this ontology does not recognize this constraint.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/elements/1.1/format"/>
+       </isDefinedBy>
+</DatatypeProperty>
diff --git a/data/datatype_properties/dc11¦language b/data/datatype_properties/dc11¦language
new file mode 100644 (file)
index 0000000..1dda15f
--- /dev/null
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty>
+       <label xml:lang="en">language</label>
+       <comment xml:lang="en">
+               <p>
+                       A language of this thing.
+               </p>
+               <p>
+                       <ptr target="(DCMI)"/> recommends the use of a « IETF Best Current Practice 47 [<ref target="https://tools.ietf.org/html/bcp47">IETF-BCP47</ref>] language tag ».
+               </p>
+               <p>
+                       <ptr target="(ANNO)"/> constrains the range of this property to <resource name="xsd:string"/>, but further stipulates in prose that it match the format of <resource name="xsd:language"/>.
+                       These datatypes share a value space, so this ontology just restricts it to the latter.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/elements/1.1/language"/>
+       </isDefinedBy>
+       <isDefinedBy>
+               <SpecificResource source="(ANNO)" fragment="dc-language"/>
+       </isDefinedBy>
+       <range>
+               <resource name="xsd:language"/>
+       </range>
+</DatatypeProperty>
diff --git a/data/datatype_properties/dc11¦publisher b/data/datatype_properties/dc11¦publisher
new file mode 100644 (file)
index 0000000..579a5d1
--- /dev/null
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty>
+       <label xml:lang="en">publisher</label>
+       <comment xml:lang="en">
+               <p>
+                       A name or identifier for the entity which made this thing available.
+               </p>
+               <p>
+                       <ptr target="(DCMI)"/> states:
+                       « Typically, the name of a Publisher should be used to indicate the entity. »
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/elements/1.1/publisher"/>
+       </isDefinedBy>
+</DatatypeProperty>
diff --git a/data/datatype_properties/dc11¦relation b/data/datatype_properties/dc11¦relation
new file mode 100644 (file)
index 0000000..aaa9f76
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty>
+       <label xml:lang="en">relation</label>
+       <comment xml:lang="en">
+               <p>
+                       A name, identifier, or description of a related resource from which this thing is derived.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/elements/1.1/relation"/>
+       </isDefinedBy>
+</DatatypeProperty>
diff --git a/data/datatype_properties/dc11¦rights b/data/datatype_properties/dc11¦rights
new file mode 100644 (file)
index 0000000..d772390
--- /dev/null
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty>
+       <label xml:lang="en">rights</label>
+       <comment xml:lang="en">
+               <p>
+                       Information about rights held in and over this thing.
+               </p>
+               <p>
+                       <ptr target="(DCMI)"/> states:
+                       « Typically, rights information includes a statement about various property rights associated with the resource, including intellectual property rights. »
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/elements/1.1/rights"/>
+       </isDefinedBy>
+</DatatypeProperty>
diff --git a/data/datatype_properties/dc11¦source b/data/datatype_properties/dc11¦source
new file mode 100644 (file)
index 0000000..da8e058
--- /dev/null
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty>
+       <label xml:lang="en">source</label>
+       <comment xml:lang="en">
+               <p>
+                       A name, identifier, or description of a related resource from which this thing is derived.
+               </p>
+               <p>
+                       <ptr target="(DCMI)"/> states:
+                       « Recommended best practice is to identify the related resource by means of a string conforming to a formal identification system. »
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/elements/1.1/source"/>
+       </isDefinedBy>
+</DatatypeProperty>
diff --git a/data/datatype_properties/dc11¦subject b/data/datatype_properties/dc11¦subject
new file mode 100644 (file)
index 0000000..b429c8d
--- /dev/null
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty>
+       <label xml:lang="en">subject</label>
+       <comment xml:lang="en">
+               <p>
+                       A topic of this thing.
+               </p>
+               <p>
+                       <ptr target="(DCMI)"/> states:
+                       « Typically, the subject will be represented using keywords, key phrases, or classification codes. »
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/elements/1.1/subject"/>
+       </isDefinedBy>
+</DatatypeProperty>
diff --git a/data/datatype_properties/dc11¦type b/data/datatype_properties/dc11¦type
new file mode 100644 (file)
index 0000000..7143bb4
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty>
+       <label xml:lang="en">type</label>
+       <comment xml:lang="en">
+               <p>
+                       A nature or genre of this thing (as distinct from its <ptr target="dc11:format"/>).
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/elements/1.1/type"/>
+       </isDefinedBy>
+</DatatypeProperty>
diff --git a/data/datatype_properties/dcterms¦alternative b/data/datatype_properties/dcterms¦alternative
new file mode 100644 (file)
index 0000000..51f1a41
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty>
+       <label xml:lang="en">alternative title</label>
+       <comment xml:lang="en">
+               <p>
+                       An alternative name given to this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/alternative"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="dcterms:title"/>
+       </subPropertyOf>
+</DatatypeProperty>
diff --git a/data/datatype_properties/dcterms¦available b/data/datatype_properties/dcterms¦available
new file mode 100644 (file)
index 0000000..b5ffaf7
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty>
+       <label xml:lang="en">date available</label>
+       <comment xml:lang="en">
+               <p>
+                       A date that this thing did or will become available.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/available"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="dcterms:date"/>
+       </subPropertyOf>
+</DatatypeProperty>
diff --git a/data/datatype_properties/dcterms¦bibliographicCitation b/data/datatype_properties/dcterms¦bibliographicCitation
new file mode 100644 (file)
index 0000000..c5f7953
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty>
+       <label xml:lang="en">date available</label>
+       <comment xml:lang="en">
+               <p>
+                       A bibliographic reference for this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/bibliographicCitation"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="dcterms:identifier"/>
+       </subPropertyOf>
+</DatatypeProperty>
diff --git a/data/datatype_properties/dcterms¦created b/data/datatype_properties/dcterms¦created
new file mode 100644 (file)
index 0000000..082b3af
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty>
+       <label xml:lang="en">date created</label>
+       <comment xml:lang="en">
+               <p>
+                       A date that this thing did or will be created.
+               </p>
+               <p>
+                       <ptr target="(ANNO)"/> constrains the range of this property to <resource name="xsd:dateTime"/>, but this ontology does not recognize this constraint.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/created"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="dcterms:date"/>
+       </subPropertyOf>
+</DatatypeProperty>
diff --git a/data/datatype_properties/dcterms¦date b/data/datatype_properties/dcterms¦date
new file mode 100644 (file)
index 0000000..4035318
--- /dev/null
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty>
+       <label xml:lang="en">date</label>
+       <comment xml:lang="en">
+               <p>
+                       A point or period of time associated with an event in the lifecycle of this thing.
+               </p>
+               <p>
+                       <ptr target="(DCMI)"/> states:
+                       « Recommended practice is to express the date, date/time, or period of time according to ISO 8601-1 [<ref target="https://www.iso.org/iso-8601-date-and-time-format.html">ISO 8601-1</ref>] or a published profile of the ISO standard, such as the W3C Note on Date and Time Formats [<ref target="https://www.w3.org/TR/NOTE-datetime">W3CDTF</ref>] or the Extended Date/Time Format Specification [<ref target="http://www.loc.gov/standards/datetime/">EDTF</ref>].
+                       If the full date is unknown, month and year (YYYY-MM) or just year (YYYY) may be used.
+                       Date ranges may be specified using ISO 8601 period of time specification in which start and end dates are separated by a '/' (slash) character.
+                       Either the start or end date may be missing. »
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/date"/>
+       </isDefinedBy>
+</DatatypeProperty>
diff --git a/data/datatype_properties/dcterms¦dateAccepted b/data/datatype_properties/dcterms¦dateAccepted
new file mode 100644 (file)
index 0000000..6732a88
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty>
+       <label xml:lang="en">date accepted</label>
+       <comment xml:lang="en">
+               <p>
+                       A date that this thing did or will be accepted.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/dateAccepted"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="dcterms:date"/>
+       </subPropertyOf>
+</DatatypeProperty>
diff --git a/data/datatype_properties/dcterms¦dateCopyrighted b/data/datatype_properties/dcterms¦dateCopyrighted
new file mode 100644 (file)
index 0000000..87502df
--- /dev/null
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty>
+       <label xml:lang="en">date copyrighted</label>
+       <comment xml:lang="en">
+               <p>
+                       A date that this thing did or will be placed under copyright.
+               </p>
+               <p>
+                       <ptr target="(DCMI)"/> states:
+                       « Typically a year. »
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/dateCopyrighted"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="dcterms:date"/>
+       </subPropertyOf>
+</DatatypeProperty>
diff --git a/data/datatype_properties/dcterms¦dateSubmitted b/data/datatype_properties/dcterms¦dateSubmitted
new file mode 100644 (file)
index 0000000..713241c
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty>
+       <label xml:lang="en">date submitted</label>
+       <comment xml:lang="en">
+               <p>
+                       A date that this thing did or will be submitted to a relevant institution.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/dateSubmitted"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="dcterms:date"/>
+       </subPropertyOf>
+</DatatypeProperty>
diff --git a/data/datatype_properties/dcterms¦identifier b/data/datatype_properties/dcterms¦identifier
new file mode 100644 (file)
index 0000000..7418d55
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty>
+       <label xml:lang="en">identifier</label>
+       <comment xml:lang="en">
+               <p>
+                       An unambiguous reference to this thing within a given context.
+               </p>
+               <p>
+                       <ptr target="(DCMI)"/> states:
+                       « Recommended practice is to identify the resource by means of a string conforming to an identification system.
+                       Examples include International Standard Book Number (ISBN), Digital Object Identifier (DOI), and Uniform Resource Name (URN).
+                       Persistent identifiers should be provided as HTTP URIs. »
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/identifier"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="contact:knownAs"/>
+       </subPropertyOf>
+</DatatypeProperty>
diff --git a/data/datatype_properties/dcterms¦issued b/data/datatype_properties/dcterms¦issued
new file mode 100644 (file)
index 0000000..cecf98a
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty>
+       <label xml:lang="en">date issued</label>
+       <comment xml:lang="en">
+               <p>
+                       A date on which this this thing did or will be issued.
+               </p>
+               <p>
+                       <ptr target="(ANNO)"/> constrains the range of this property to <resource name="xsd:dateTime"/>, but this ontology does not recognize this constraint.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/issued"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="dcterms:date"/>
+       </subPropertyOf>
+</DatatypeProperty>
diff --git a/data/datatype_properties/dcterms¦modified b/data/datatype_properties/dcterms¦modified
new file mode 100644 (file)
index 0000000..2922901
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty>
+       <label xml:lang="en">date modified</label>
+       <comment xml:lang="en">
+               <p>
+                       A date on which this this thing did or will be modified.
+               </p>
+               <p>
+                       <ptr target="(ANNO)"/> constrains the range of this property to <resource name="xsd:dateTime"/>, but this ontology does not recognize this constraint.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/modified"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="dcterms:date"/>
+       </subPropertyOf>
+</DatatypeProperty>
diff --git a/data/datatype_properties/dcterms¦title b/data/datatype_properties/dcterms¦title
new file mode 100644 (file)
index 0000000..c2da93e
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty>
+       <label xml:lang="en">title</label>
+       <comment xml:lang="en">
+               <p>
+                       A name given to this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/title"/>
+       </isDefinedBy>
+       <equivalentProperty>
+               <resource name="foaf:name"/>
+       </equivalentProperty>
+       <subPropertyOf>
+               <resource name="contact:knownAs"/>
+       </subPropertyOf>
+</DatatypeProperty>
diff --git a/data/datatype_properties/dcterms¦valid b/data/datatype_properties/dcterms¦valid
new file mode 100644 (file)
index 0000000..8724cf2
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty>
+       <label xml:lang="en">date valid</label>
+       <comment xml:lang="en">
+               <p>
+                       A date on which this this thing did or will be valid.
+               </p>
+               <p>
+                       This ontology constrains the range of this property to <resource name="xsd:dateTime"/>, for parity with the other <ptr target="dcterms:date"/> subproperties.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/valid"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="dcterms:date"/>
+       </subPropertyOf>
+       <range>
+               <resource name="xsd:dateTime"/>
+       </range>
+</DatatypeProperty>
diff --git a/data/datatype_properties/doc¦version b/data/datatype_properties/doc¦version
new file mode 100644 (file)
index 0000000..3727190
--- /dev/null
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty>
+       <label xml:lang="en">version</label>
+       <comment xml:lang="en">
+               <p>
+                       A version string for this thing.
+               </p>
+               <p>
+                       The value of this property is always a <resource name="xsd:string"/>, even when it is conceptually something else (a number or date); the versions <value datatype="xsd:string">1</value> and <value datatype="xsd:string">01</value> are considered different.
+               </p>
+               <p>
+                       <ptr target="(SWAP-PIM)"/> actually provides <em>two</em> different definitions for <resource name="doc:version"/>: this one (which seems to actually be used), and an experimental one with roughly the same meaning as <ptr target="dcterms:hasVersion"/>.
+                       This ontology ignores the latter definition.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SWAP-PIM)"/>
+       </isDefinedBy>
+       <range>
+               <resource name="xsd:string"/>
+       </range>
+</DatatypeProperty>
diff --git a/data/datatype_properties/foaf¦accountName b/data/datatype_properties/foaf¦accountName
new file mode 100644 (file)
index 0000000..2cfe860
--- /dev/null
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty>
+       <label xml:lang="en">account name</label>
+       <comment xml:lang="en">
+               <p>
+                       The unique identifier for this <ref target="foaf:OnlineAccount">Online Account</ref> (within the context of its <ref target="foaf:accountServiceHomepage">account service home·page</ref>).
+               </p>
+               <p>
+                       Despite its label, this is <em>not</em> a subproperty of <ptr target="foaf:name"/>.
+                       This ontology instead defines it as a subproperty of <ptr target="dcterms:identifier"/>, which is more in line with its intended usage.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(FOAF)" fragment="term_accountName"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="dcterms:identifier"/>
+       </subPropertyOf>
+       <domain>
+               <resource name="foaf:OnlineAccount"/>
+       </domain>
+</DatatypeProperty>
diff --git a/data/datatype_properties/foaf¦familyName b/data/datatype_properties/foaf¦familyName
new file mode 100644 (file)
index 0000000..21a3f8e
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty>
+       <label xml:lang="en">family name</label>
+       <comment xml:lang="en">
+               <p>
+                       A family or inherited component of this <ref target="foaf:Person">Person</ref>s name.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(FOAF)" fragment="term_familyName"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="foaf:Person"/>
+       </domain>
+</DatatypeProperty>
diff --git a/data/datatype_properties/foaf¦firstName b/data/datatype_properties/foaf¦firstName
new file mode 100644 (file)
index 0000000..c350266
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty>
+       <label xml:lang="en">first name</label>
+       <comment xml:lang="en">
+               <p>
+                       A first component of this <ref target="foaf:Person">Person</ref>s name.
+               </p>
+               <p>
+                       This property is provided for use with legacy data, which may be ambiguous; <ptr target="foaf:familyName"/> or <ptr target="foaf:givenName"/> should be used instead where possible.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(FOAF)" fragment="term_firstName"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="foaf:Person"/>
+       </domain>
+</DatatypeProperty>
diff --git a/data/datatype_properties/foaf¦gender b/data/datatype_properties/foaf¦gender
new file mode 100644 (file)
index 0000000..4f6e1cb
--- /dev/null
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty functional="yes">
+       <label xml:lang="en">gender</label>
+       <comment xml:lang="en">
+               <p>
+                       The gender of this <ref target="foaf:Agent">Agent</ref>.
+               </p>
+               <p>
+                       This property, somewhat awkwardly, is treated as an open‐ended enumeration of plain string values, of which two are clearly defined: <value datatype="xsd:string">male</value> and <value datatype="xsd:string">female</value>.
+                       <ptr target="(FOAF)"/> remarks that this property “is not intended to capture the full variety of biological, social, and sexual concepts associated with the word ‘gender’” but fails to identify what it <em>is</em> meant to capture.
+                       Presumably, its utility depends on context.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(FOAF)" fragment="term_gender"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="foaf:Agent"/>
+       </domain>
+       <range>
+               <resource name="xsd:string"/>
+       </range>
+</DatatypeProperty>
diff --git a/data/datatype_properties/foaf¦givenName b/data/datatype_properties/foaf¦givenName
new file mode 100644 (file)
index 0000000..919603d
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty>
+       <label xml:lang="en">given name</label>
+       <comment xml:lang="en">
+               <p>
+                       A given or personal component of this <ref target="foaf:Person">Person</ref>s name.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(FOAF)" fragment="term_givenName"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="foaf:Person"/>
+       </domain>
+</DatatypeProperty>
diff --git a/data/datatype_properties/foaf¦lastName b/data/datatype_properties/foaf¦lastName
new file mode 100644 (file)
index 0000000..a138d8a
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty>
+       <label xml:lang="en">last name</label>
+       <comment xml:lang="en">
+               <p>
+                       A last component of this <ref target="foaf:Person">Person</ref>s name.
+               </p>
+               <p>
+                       This property is provided for use with legacy data, which may be ambiguous; <ptr target="foaf:familyName"/> or <ptr target="foaf:givenName"/> should be used instead where possible.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(FOAF)" fragment="term_lastName"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="foaf:Person"/>
+       </domain>
+</DatatypeProperty>
diff --git a/data/datatype_properties/foaf¦name b/data/datatype_properties/foaf¦name
new file mode 100644 (file)
index 0000000..1a8c239
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty>
+       <label xml:lang="en">name</label>
+       <comment xml:lang="en">
+               <p>
+                       A name of this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(FOAF)" fragment="term_name"/>
+       </isDefinedBy>
+       <equivalentProperty>
+               <resource name="dcterms:title"/>
+       </equivalentProperty>
+       <subPropertyOf>
+               <resource name="contact:knownAs"/>
+       </subPropertyOf>
+</DatatypeProperty>
diff --git a/data/datatype_properties/foaf¦nick b/data/datatype_properties/foaf¦nick
new file mode 100644 (file)
index 0000000..e5c2c4f
--- /dev/null
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty>
+       <label xml:lang="en">nick</label>
+       <comment xml:lang="en">
+               <p>
+                       A short name used by this <ref target="foaf:Agent">Agent</ref>, for example as a login identifier.
+               </p>
+               <p>
+                       The domain of this property is not formally given in <ptr target="(FOAF)"/>, but implied to be either an Agent or a <ref target="foaf:Person">Person</ref>.
+                       It is left undefined in this ontology, to enable its usage with certain concepts, like pseuds or personas, which might not formally fall into either category.
+               </p>
+               <p>
+                       Some nicks may be <ref target="foaf:name">names</ref>, but some may be <ref target="dcterms:identifier">identifiers</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(FOAF)" fragment="term_nick"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="contact:knownAs"/>
+       </subPropertyOf>
+</DatatypeProperty>
diff --git a/data/datatype_properties/foaf¦phone b/data/datatype_properties/foaf¦phone
new file mode 100644 (file)
index 0000000..df6c889
--- /dev/null
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty>
+       <label xml:lang="en">phone</label>
+       <comment xml:lang="en">
+               <p>
+                       A phone (number) for this thing.
+               </p>
+               <p>
+                       Existing practice is (probably) to use this property as an object property linking to a resource with a <code>tel:</code> U·R·I, but it¦s unclear what such resources would represent.
+                       This vocabulary instead defines it as a data property which takes <code>tel:</code> U·R·I¦s as <resource name="xsd:anyURI"/> values.
+                       Use <ptr target="contact:phone"/> instead if you want to point to a <ref target="contact:Phone">Phone</ref> object.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(FOAF)" fragment="term_phone"/>
+       </isDefinedBy>
+       <range>
+               <Datatype>
+                       <onDatatype>
+                               <resource name="xsd:anyURI"/>
+                       </onDatatype>
+                       <withRestrictions>
+                               <pattern>tel:.*</pattern>
+                       </withRestrictions>
+               </Datatype>
+       </range>
+</DatatypeProperty>
diff --git a/data/datatype_properties/foaf¦plan b/data/datatype_properties/foaf¦plan
new file mode 100644 (file)
index 0000000..d68b628
--- /dev/null
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty>
+       <label xml:lang="en">plan</label>
+       <comment xml:lang="en">
+               <p>
+                       A plan comment for this <ref target="foaf:Person">Person</ref>, in the tradition of the finger protocol.
+               </p>
+               <p>
+                       The contents of this property are arbitrary, but typically a <resource name="xsd:string"/>.
+                       It is generally implied that a Person determines their own plan.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(FOAF)" fragment="term_plan"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="foaf:Person"/>
+       </domain>
+</DatatypeProperty>
diff --git a/data/datatype_properties/foaf¦title b/data/datatype_properties/foaf¦title
new file mode 100644 (file)
index 0000000..dda97a7
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty>
+       <label xml:lang="en">title</label>
+       <comment xml:lang="en">
+               <p>
+                       The honorific title associated with this thing.
+               </p>
+               <p>
+                       This property is for “titles” in the sense of “Dr” or “Mx”, not in the sense of book titles.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(FOAF)" fragment="term_title"/>
+       </isDefinedBy>
+</DatatypeProperty>
diff --git a/data/datatype_properties/rdf¦value b/data/datatype_properties/rdf¦value
new file mode 100644 (file)
index 0000000..d3df764
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty>
+       <label xml:lang="en">value</label>
+       <comment xml:lang="en">
+               <p>
+                       The primary value associated with this thing.
+               </p>
+               <p>
+                       This ontology restricts values to R·D·F literals (it is treated as a data property); this restriction is not present in the original definition nor universally‐accepted.
+               </p>
+               <p>
+                       This property is useful to mitigate other constraints made by this vocabulary; for example, altho a <ref target="rdf:List">List</ref> must <ref target="rdf:first">have a first element</ref> which is nonliteral, it could be a blank node with a literal <resource name="rdf:value"/>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(RDF11-SCHEMA)" fragment="ch_value"/>
+       </isDefinedBy>
+</DatatypeProperty>
diff --git a/data/datatype_properties/shacl¦namespace b/data/datatype_properties/shacl¦namespace
new file mode 100644 (file)
index 0000000..f527ff8
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty functional="yes">
+       <label xml:lang="en">name·space</label>
+       <comment xml:lang="en">
+               <p>
+                       The name·space of this <ref target="shacl:PrefixDeclaration">Prefix Declaration</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SHACL)" fragment="dfn-prefix-declarations"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="shacl:PrefixDeclaration"/>
+       </domain>
+       <range>
+               <resource name="xsd:anyURI"/>
+       </range>
+</DatatypeProperty>
diff --git a/data/datatype_properties/shacl¦prefix b/data/datatype_properties/shacl¦prefix
new file mode 100644 (file)
index 0000000..66f584d
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty functional="yes">
+       <label xml:lang="en">prefix</label>
+       <comment xml:lang="en">
+               <p>
+                       The prefix of this <ref target="shacl:PrefixDeclaration">Prefix Declaration</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SHACL)" fragment="dfn-prefix-declarations"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="shacl:PrefixDeclaration"/>
+       </domain>
+       <range>
+               <resource name="xsd:string"/>
+       </range>
+</DatatypeProperty>
diff --git a/data/datatype_properties/skosxl¦literalForm b/data/datatype_properties/skosxl¦literalForm
new file mode 100644 (file)
index 0000000..7a8953a
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty>
+       <label xml:lang="en">literal form</label>
+       <comment xml:lang="en">
+               <p>
+                       The literal form of this <ref target="skos:Label">Label</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SKOS)" fragment="xl-literalForm"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="rdf:value"/>
+       </subPropertyOf>
+       <domain>
+               <resource name="skosxl:Label"/>
+       </domain>
+       <range>
+               <resource name="rdf:PlainLiteral"/>
+       </range>
+</DatatypeProperty>
diff --git a/data/datatype_properties/skos¦notation b/data/datatype_properties/skos¦notation
new file mode 100644 (file)
index 0000000..720cf2f
--- /dev/null
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty>
+       <label xml:lang="en">notation</label>
+       <comment xml:lang="en">
+               <p>
+                       A string of characters used to uniquely identify a thing within a given context.
+               </p>
+               <p>
+                       <ptr target="(SKOS)"/> recommends using custom datatypes with this property to identify the notation, but this ontology discourages such usage:
+                       Custom datatypes are generally not compatible with Owl and cannot easily be reasoned about.
+                       It is better to instead use a more specific property, or a qualified relation, when typing the notation is important.
+               </p>
+               <p>
+                       If two <ref target="skos:Concept">Concepts</ref> have the same notation within a single <ref target="skos:ConceptScheme">Concept Scheme</ref>, it is assumed that they are in fact the same individual.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SKOS)" fragment="notation"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="dcterms:identifier"/>
+       </subPropertyOf>
+</DatatypeProperty>
diff --git a/data/datatype_properties/splashText b/data/datatype_properties/splashText
new file mode 100644 (file)
index 0000000..44e297e
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty>
+       <label xml:lang="en">splash text</label>
+       <comment xml:lang="en">
+               <p>
+                       A short phrase of text associated with this thing.
+               </p>
+               <p>
+                       It is generally expected that most things with splash text have more than one, and that rendering systems will randomly select one of the pieces of splash text to add colour to related pages describing the thing.
+                       In this sense, they are similar to “fortunes” (but with less semantic baggage).
+               </p>
+       </comment>
+       <range>
+               <Datatype>
+                       <unionOf>
+                               <resource name="rdf:PlainLiteral"/>
+                               <resource name="rdf:XMLLiteral"/>
+                       </unionOf>
+               </Datatype>
+       </range>
+</DatatypeProperty>
diff --git a/data/datatype_properties/title b/data/datatype_properties/title
new file mode 100644 (file)
index 0000000..e73a224
--- /dev/null
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE DatatypeProperty SYSTEM "../../DTD">
+<DatatypeProperty>
+       <label xml:lang="en">title</label>
+       <comment xml:lang="en">
+               <p>
+                       A name by which this thing may be cited as an information resource.
+               </p>
+       </comment>
+       <subPropertyOf>
+               <resource name="dcterms:title"/>
+       </subPropertyOf>
+       <range>
+               <Datatype>
+                       <unionOf>
+                               <resource name="rdf:PlainLiteral"/>
+                               <resource name="rdf:XMLLiteral"/>
+                       </unionOf>
+               </Datatype>
+       </range>
+</DatatypeProperty>
diff --git a/data/datatypes/contact¦LanguageCode b/data/datatypes/contact¦LanguageCode
new file mode 100644 (file)
index 0000000..09f8a81
--- /dev/null
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Datatype SYSTEM "../../DTD">
+<Datatype>
+       <label xml:lang="en">Language Code</label>
+       <comment xml:lang="en">
+               <p>
+                       A primary language subtag.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SWAP-PIM)"/>
+       </isDefinedBy>
+       <equivalentClass>
+               <Datatype>
+                       <onDatatype>
+                               <resource name="xsd:language"/>
+                       </onDatatype>
+                       <withRestrictions>
+                               <pattern>[a-z]{2,3}</pattern>
+                       </withRestrictions>
+               </Datatype>
+       </equivalentClass>
+</Datatype>
diff --git a/data/named_individuals/_ANNO_ b/data/named_individuals/_ANNO_
new file mode 100644 (file)
index 0000000..f0c0ca0
--- /dev/null
@@ -0,0 +1,82 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE NamedIndividual SYSTEM "../../DTD">
+<NamedIndividual name="https://www.w3.org/TR/annotation-vocab/">
+       <label xml:lang="en">Web Annotation Vocabulary</label>
+       <comment xml:lang="en">
+               <p>
+                       The Web Annotation Vocabulary provides the terms and definitions which underpin the related <ref target="https://www.w3.org/TR/annotation-model/">Web Annotation Data Model</ref>.
+                       The terminology (and specifications) can make the underlying concepts seem a bit obtuse, but fundamentally a Web <ref target="anno:Annotation">Annotation</ref> is a (typically purposeful) object which <ref target="anno:hasTarget">has a target</ref> and associates it with zero or more <ref target="anno:hasBody">bodies</ref>.
+                       If you can get past all the language, this is fundamentally a very simple model which is broadly applicable.
+               </p>
+               <p>
+                       This ontology does not define <em>every</em> term in the Web Annotation Vocabulary, but it does define most of them.
+                       Terms it excludes include :⁠—
+               </p>
+               <list>
+                       <item>
+                               <p>
+                                       <resource name="anno:annotationService"/>, as it merely offers a discovery endpoint for the Web Annotation Protocol, which this ontology makes no claims to support.
+                               </p>
+                       </item>
+                       <item>
+                               <p>
+                                       <resource name="anno:Choice"/>, as it defines what is in essence a rendering detail.
+                                       If two bodies are, for example, equivalent but in different languages, it would be better to provide that information via relationships between the bodies themselves, and leave it to renderers to determine whether to display both or choose between them.
+                               </p>
+                       </item>
+                       <item>
+                               <p>
+                                       <resource name="anno:Style"/>, <resource name="anno:CssStyle"/>, <resource name="anno:styledBy"/>, and <resource name="anno:styleClass"/>, as these are rendering details which ought to be left to applications.
+                               </p>
+                       </item>
+                       <item>
+                               <p>
+                                       <resource name="anno:SvgSelector"/> is underspecified, and its <ref target="rdf:value">value</ref> is generally described as a string, not the more appropriate <resource name="rdf:XMLLiteral"/>.
+                               </p>
+                       </item>
+                       <item>
+                               <p>
+                                       <resource name="anno:TextualBody"/> follows an undesirable pattern of recommending a plaintext string <ref target="rdf:value">value</ref>, with its language and media type specified thru other properties.
+                                       For plaintext strings, it is better for language to be provided via the <resource name="rdf:langString"/> mechanism, and it is better that X·M·L values be provided as <resource name="rdf:XMLLiteral"/>s.
+                                       Because these things complicate the processing model and it is unlikely that existing Web Annotation tools would support them, this ontology chose <em>not</em> to complicate <resource name="anno:TextualBody"/>.
+                                       Instead, <ptr target="awol:Content"/> should be used.
+                               </p>
+                       </item>
+                       <item>
+                               <p>
+                                       <resource name="anno:bodyValue"/>, for the same reasons as <resource name="anno:TextualBody"/>.
+                               </p>
+                       </item>
+                       <item>
+                               <p>
+                                       <resource name="anno:cachedSource"/> is semantically muddled; <ref target="anno:TimeState">Time States</ref> don¦t generally <ref target="anno:hasSource">have sources</ref>, so how can they have cached ones?
+                                       This would have been better modelled as a property of the enclosing <ref target="anno:ResourceSelection">Resource Selection</ref>.
+                               </p>
+                       </item>
+                       <item>
+                               <p>
+                                       <resource name="anno:renderedVia"/>, while providing interesting and potentially meaningful provenance information, adds additional complexity to the model without any known practical use·cases.
+                                       This ontology may choose to define it at a later time if practical use·cases are found.
+                               </p>
+                       </item>
+                       <item>
+                               <p>
+                                       Properties originally defined by other vocabularies, when those vocabularies are not otherwise defined in this ontology.
+                               </p>
+                       </item>
+               </list>
+       </comment>
+       <type>
+               <resource name="dcterms:BibliographicResource"/>
+       </type>
+       <type>
+               <resource name="dcterms:Standard"/>
+       </type>
+       <type>
+               <resource name="foaf:Document"/>
+       </type>
+</NamedIndividual>
diff --git a/data/named_individuals/_AWOL_ b/data/named_individuals/_AWOL_
new file mode 100644 (file)
index 0000000..aab6382
--- /dev/null
@@ -0,0 +1,52 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE NamedIndividual SYSTEM "../../DTD">
+<NamedIndividual name="http://bblfish.net/work/atom-owl/2006-06-06/AtomOwl.html">
+       <label xml:lang="en">Awol</label>
+       <comment xml:lang="en">
+               <p>
+                       The Atom·Owl Vocabulary, or Awol, was originally an attempt to convert the semantics of <ptr target="(RFC4287)"/> into R·D·F.
+                       Consequently, it was one of the first vocabularies to tackle the problem of federated blogging—and what we would today call federated social media.
+                       The specification is full of holes and questions, but never·the·less some aspects of how it handles things are far superior to later, more protocol‐driven federated media approaches.
+               </p>
+               <p>
+                       This ontology defines all of Awol, except for :⁠—
+               </p>
+               <list>
+                       <item>
+                               <p>
+                                       <resource name="awol:XML"/>, which does not appear in the original Awol documentation and seems to have been quietly added in the six months after publication.
+                                       This class is of limited utility, as it is not a type of <ref target="awol:PlainText">Plain Text Content</ref>.
+                               </p>
+                       </item>
+                       <item>
+                               <p>
+                                       The type‐specific properties <resource name="awol:text"/>, <resource name="awol:xhtml"/>, <resource name="awol:html"/>, and <resource name="awol:xml"/>.
+                                       <ptr target="awol:body"/> can easily accommodate all of these use·cases, altho note that this ontology sets particular restrictions on it, depending on the <ref target="awol:type">media type</ref> of the containing <ref target="awol:Content">Content</ref>.
+                               </p>
+                       </item>
+                       <item>
+                               <p>
+                                       <resource name="awol:uri"/>, as its intended meaning is conveyed using ordinary R·D·F named nodes.
+                                       To indicate the <em>preferred</em> I·R·I for a thing, use <ptr target="contact:preferredURI"/>.
+                               </p>
+                       </item>
+               </list>
+               <p>
+                       Awol supplies restrictions on the domains and ranges of many properties, and describes many of them as functional, limiting their utility outside of its own data model.
+                       This ontology maintains the restrictions on the ranges, which can be significant, but loosens the restrictions on the domains and cardinality.
+               </p>
+       </comment>
+       <type>
+               <resource name="dcterms:BibliographicResource"/>
+       </type>
+       <type>
+               <resource name="dcterms:Standard"/>
+       </type>
+       <type>
+               <resource name="foaf:Document"/>
+       </type>
+</NamedIndividual>
diff --git a/data/named_individuals/_DCMI_ b/data/named_individuals/_DCMI_
new file mode 100644 (file)
index 0000000..e37b9f8
--- /dev/null
@@ -0,0 +1,83 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE NamedIndividual SYSTEM "../../DTD">
+<NamedIndividual name="https://www.dublincore.org/specifications/dublin-core/dcmi-terms/">
+       <label xml:lang="en">D·C·M·I Metadata Terms</label>
+       <comment xml:lang="en">
+               <p>
+                       The Dublin Core Metadata Initiative (D·C·M·I) metadata terms (i·e, the Dublin Core vocabulary) are some of the earliest attempts at standardizing metadata encoding on the Web.
+                       Because of their age and association with library science (the “Dublin” is Dublin, Ohio, the headquarters of O·C·L·C), these terms are widely used and referenced both in metadata resources themselves and in other specifications which describe them.
+                       Not every aspect of the model has stood the test of time, but core terms like <ptr target="dcterms:title"/> are indispensible.
+               </p>
+               <p>
+                       D·C·M·I defines four different name·spaces.
+                       Of these, <code>dcterms:</code> and <code>dcmitype:</code> are the straightforwardly useful as documented.
+                       The <code>dcam:</code> name·space is not really useful at all, as much more sophisticated solutions to its problem space exist.
+               </p>
+               <p>
+                       The <code>dc11:</code> name·space requires more careful consideration.
+                       Each term in the <code>dc11:</code> name·space is duplicated in the <code>dcterms:</code> name·space, and in general the latter is recommended.
+                       However, the <code>dcterms:</code> name·space is not use·able in all cases, especially within an Owl ontology.
+                       For example, <resource name="dcterms:language"/> is defined with a range of <resource name="dcterms:LinguisticSystem"/>.
+                       One might consider <resource name="dcterms:LinguisticSystem"/> to be an Owl Class of objects, and consequently <resource name="dcterms:language"/> to be an object property.<note n="1">
+                               <p>
+                                       This is the interpretation that this ontology makes, but it is not the only valid one.
+                                       <resource name="dcterms:LinguisticSystem"/> could instead be a Datatype, requiring <resource name="dcterms:language"/> to take only Literal values, not objects.
+                                       A third option, where <resource name="dcterms:LinguisticSystem"/> encompasses both objects and literal values, is hypothetically possible but not practically realizable in Owl.
+                               </p>
+                       </note>
+                       This interpretation means <resource name="dcterms:language"/> cannot be used as a data property or take data values, such as <resource name="xsd:language"/>s.
+                       Yet <resource name="dc11:language"/>, which has no defined range in D·C·M·I, can be defined as a data property instead,<note n="2">
+                               <p>
+                                       If one ignores the subproperty definitions provided in the D·C·M·I specification.
+                                       Actually, D·C·M·I defines all <code>dc11:</code> terms as superproperties of their <code>dcterms:</code> counterparts—implying, under Owl semantics, that they are of the same type.
+                                       While this isn¦t formally impossible (properties serving dual roles as both data properties and object properties is not inconsistent), it is impossible to reason about effectively.
+                                       Keeping <code>dc11:</code> properties of the same type as <code>dcterms:</code> negates the utility of having the two name·spaces and doesn¦t match actual usage in the wild, so this ontology simply ignores the subproperty relationships between the two.
+                               </p>
+                       </note> and accept the values that <resource name="dcterms:language"/> cannot.
+               </p>
+               <p>
+                       The actual definitions of the D·C·M·I terms do not have an unambiguous mapping into Owl, but this ontology is forced to take a stance as to what such a mapping would be.
+                       It tries to do so in the most broadly‐compatible, uncontroversial way for those terms in the <code>dcterms:</code> name·space.
+                       It then takes the opposite position for terms in <code>dc11:</code>, with the assumption that data which is not using the <code>dcterms:</code> name·space is refusing to do so with good reason.
+                       Neither of these positions are incontrovertible, and not all R·D·F graphs will conform to them.
+                       But this is the best that can be done for a set of name·spaces which are foundational to so many internet standards and yet themselves so loosely‐specified.
+               </p>
+               <p>
+                       Because of their ubiquity, all terms from <code>dc11:</code>, <code>dcterms:</code>, and <code>dcmitype:</code> are given definitions in this ontology, regardless of perceived utility, with the following exceptions :⁠—
+               </p>
+               <list>
+                       <item>
+                               <p>
+                                       <resource name="dcterms:AgentClass"/>, and the properties which have it as their range (<resource name="dcterms:audience"/>, <resource name="dcterms:educationLevel"/>, <resource name="dcterms:mediator"/>).
+                                       The use of <resource name="dcterms:AgentClass"/> as both a class (of which <ptr target="dcterms:Agent"/>s are instances) and an object isn¦t problematic ⅌·se, but this kind of metamodelling is not really bestpractices anymore.
+                                       It is better to model kinds of agents as a <em>role</em> which agents (or qualified agents) <em>possess</em> rather than a <em>type</em> which they <em>have</em>; in general, typing information is not useful for grabbag qualifications on objects, but rather as a mechanism for qualifying or contextualizing the <em>properties</em> which an object has.
+                               </p>
+                       </item>
+                       <item>
+                               <p>
+                                       Vocabulary encoding schemes, as they depend on <code>dcam:</code> and <ptr target="(SKOS)"/> is a better solution.
+                               </p>
+                       </item>
+                       <item>
+                               <p>
+                                       Syntax encoding schemes, i·e datatypes.
+                                       The use of datatypes beyond the core X·S·D and R·D·F set on literals for indicating the format of the literal data is an idea from early in R·D·F development which hasn¦t withstood the test of time:
+                                       Such datatypes can¦t typically be reasoned about, or constrained, and offer little over plain string typing in a qualified relation that also indicates the type of data.
+                               </p>
+                       </item>
+               </list>
+       </comment>
+       <type>
+               <resource name="dcterms:BibliographicResource"/>
+       </type>
+       <type>
+               <resource name="dcterms:Standard"/>
+       </type>
+       <type>
+               <resource name="foaf:Document"/>
+       </type>
+</NamedIndividual>
diff --git a/data/named_individuals/_EVO-ONT_ b/data/named_individuals/_EVO-ONT_
new file mode 100644 (file)
index 0000000..aab44ef
--- /dev/null
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE NamedIndividual SYSTEM "../../DTD">
+<NamedIndividual name="https://files.ifi.uzh.ch/ddis/oldweb/ddis/research/evoont/">
+       <label xml:lang="en">Evo·Ont</label>
+       <type>
+               <resource name="dcterms:BibliographicResource"/>
+       </type>
+       <type>
+               <resource name="dcterms:Standard"/>
+       </type>
+       <type>
+               <resource name="foaf:Document"/>
+       </type>
+</NamedIndividual>
diff --git a/data/named_individuals/_FOAF_ b/data/named_individuals/_FOAF_
new file mode 100644 (file)
index 0000000..f21af87
--- /dev/null
@@ -0,0 +1,69 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE NamedIndividual SYSTEM "../../DTD">
+<NamedIndividual name="http://xmlns.com/foaf/spec/">
+       <label xml:lang="en">F·O·A·F</label>
+       <comment xml:lang="en">
+               <p>
+                       F·O·A·F is an early and widely‐used vocabulary which grew some·what organically within the R·D·F·Web community.
+                       It is not necessarily weldesigned in all respects, but it has been commonly deployed as a vocabulary for modelling <ref target="foaf:Agent">Agents</ref>, and is often used alongside <ptr target="(DCMI)"/> (which models the things they <ref target="foaf:made">make</ref>).
+                       D·C·M·I and F·O·A·F have a <ref target="https://www.dublincore.org/collaborations/foaf/good_neighbour_agreement/">good neighbour agreement</ref> formalizing the fact that the two vocabularies often go hand‐in‐hand.
+               </p>
+               <p>
+                       Due to its organically‐developed nature, terms in F·O·A·F were given a <ref target="vocabstatus:term_status">status</ref>, meant to indicate how stable their definitions ought to be considered.
+                       These statuses have not been updated in over a decade, and are not preserved here; however, a status of at least <value datatype="xsd:string">testing</value> was deemed a criterion for inclusion.
+               </p>
+               <p>
+                       Otherwise, this ontology provides definitions for the bulk of F·O·A·F, wilfully excluding the following properties :⁠—
+               </p>
+               <list>
+                       <item>
+                               <p>
+                                       <resource name="foaf:interest"/>, <resource name="foaf:schoolHomepage"/>, and <resource name="foaf:workplaceHomepage"/> are roundabout terms which indicate <ref target="foaf:Document">Documents</ref> which <ref target="foaf:primaryTopic">have a primary topic</ref> of a thing, rather than just indicating the thing itself.
+                                       This was a pragmatic choice by the authors of F·O·A·F because it was assumed these documents would have more welknown, and thus easily-queryable, I·R·I¦s.
+                                       But R·D·F tooling and understanding has significantly matured in the years since these properties were introduced, and they are far from bestpractice now.
+                                       (Just make a bloody blank node!)
+                               </p>
+                       </item>
+                       <item>
+                               <p>
+                                       <resource name="foaf:mbox"/> and <resource name="foaf:mbox_sha1sum"/> are properties for identifying the original, not current, owner of an internet mailbox, and thus not useful for the actual sending of messages.
+                                       Originally, these properties were conceived as a means of determining <ref target="foaf:Agent">Agent</ref> identity; in the case of <resource name="foaf:mbox"/>, this intent is much better served by just using a <code>tag:</code> U·R·I, which can be email‐derived.
+                                       <resource name="foaf:mbox_sha1sum"/> is of questionable utility in practice.
+                               </p>
+                       </item>
+                       <item>
+                               <p>
+                                       <resource name="foaf:PersonalProfileDocument"/> is a subclass of <ref target="foaf:Document">Document</ref> which is used for R·D·F documents whose <ref target="foaf:primaryTopic">primary topic</ref> is their <ref target="foaf:maker">maker</ref>.
+                                       But this relationship is more useful stated explicitly (i·e, with properties), and the class offers little.
+                               </p>
+                       </item>
+                       <item>
+                               <p>
+                                       A number of properties (<resource name="foaf:aimChatID"/>, <resource name="foaf:icqChatID"/>, <resource name="foaf:jabberID"/>, <resource name="foaf:msnChatID"/>, <resource name="foaf:skypeID"/>, <resource name="foaf:yahooChatID"/>) are tied to specific online platforms; these are better served by the generic properties surrounding <ref target="foaf:OnlineAccount">Online Accounts</ref>.
+                               </p>
+                       </item>
+                       <item>
+                               <p>
+                                       <resource name="foaf:myersBriggs"/>, for lack of any strong argument for inclusion.
+                               </p>
+                       </item>
+               </list>
+               <p>
+                       F·O·A·F also makes use of a single class in the <code>geo:</code> name·space, <ptr target="geo:SpatialThing"/>.
+                       This ontology like·wise adopts this term.
+               </p>
+       </comment>
+       <type>
+               <resource name="dcterms:BibliographicResource"/>
+       </type>
+       <type>
+               <resource name="dcterms:Standard"/>
+       </type>
+       <type>
+               <resource name="foaf:Document"/>
+       </type>
+</NamedIndividual>
diff --git a/data/named_individuals/_HTML_ b/data/named_individuals/_HTML_
new file mode 100644 (file)
index 0000000..2891e62
--- /dev/null
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE NamedIndividual SYSTEM "../../DTD">
+<NamedIndividual name="https://html.spec.whatwg.org/">
+       <label xml:lang="en">H·T·M·L</label>
+       <type>
+               <resource name="dcterms:BibliographicResource"/>
+       </type>
+       <type>
+               <resource name="dcterms:Standard"/>
+       </type>
+       <type>
+               <resource name="foaf:Document"/>
+       </type>
+</NamedIndividual>
diff --git a/data/named_individuals/_MEDIA-FRAGS_ b/data/named_individuals/_MEDIA-FRAGS_
new file mode 100644 (file)
index 0000000..842682e
--- /dev/null
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE NamedIndividual SYSTEM "../../DTD">
+<NamedIndividual name="http://www.w3.org/TR/media-frags/">
+       <label xml:lang="en">Media Fragments</label>
+       <type>
+               <resource name="dcterms:BibliographicResource"/>
+       </type>
+       <type>
+               <resource name="dcterms:Standard"/>
+       </type>
+       <type>
+               <resource name="foaf:Document"/>
+       </type>
+</NamedIndividual>
diff --git a/data/named_individuals/_OWL2-MAPPING_ b/data/named_individuals/_OWL2-MAPPING_
new file mode 100644 (file)
index 0000000..cc2148f
--- /dev/null
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE NamedIndividual SYSTEM "../../DTD">
+<NamedIndividual name="https://www.w3.org/TR/owl2-mapping-to-rdf/">
+       <label xml:lang="en">Owl 2 Mapping To R·D·F Graphs</label>
+       <comment xml:lang="en">
+               <p>
+                       This specification provides the mappings from the functional notation used by <ptr target="(OWL2)"/> into R·D·F.
+                       The terms for these mappings are taken as axiomatic for this ontology, and not given special notice or defined.
+               </p>
+       </comment>
+       <type>
+               <resource name="dcterms:BibliographicResource"/>
+       </type>
+       <type>
+               <resource name="dcterms:Standard"/>
+       </type>
+       <type>
+               <resource name="foaf:Document"/>
+       </type>
+</NamedIndividual>
diff --git a/data/named_individuals/_OWL2_ b/data/named_individuals/_OWL2_
new file mode 100644 (file)
index 0000000..71bd0e5
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE NamedIndividual SYSTEM "../../DTD">
+<NamedIndividual name="https://www.w3.org/TR/owl2-syntax/">
+       <label xml:lang="en">Owl 2 Structural Specification</label>
+       <comment xml:lang="en">
+               <p>
+                       This specification defines the conceptual structure for Owl, independent of any serialization format.
+                       Many terms in the Owl name·space are actually “defined” by <ptr target="(OWL2-MAPPING)"/>, which explains how to convert this conceptual structure into R·D·F graphs.
+                       However, this specification provides the definition for the few terms which are actually relevant to this ontology from a nonmeta perspective; namely its set of annotation properties.
+                       It also redefines a few terms from <ptr target="(RDF11-SCHEMA)"/> for use in annotations.
+               </p>
+       </comment>
+       <type>
+               <resource name="dcterms:BibliographicResource"/>
+       </type>
+       <type>
+               <resource name="dcterms:Standard"/>
+       </type>
+       <type>
+               <resource name="foaf:Document"/>
+       </type>
+</NamedIndividual>
diff --git a/data/named_individuals/_RDF11-SCHEMA_ b/data/named_individuals/_RDF11-SCHEMA_
new file mode 100644 (file)
index 0000000..8d045ab
--- /dev/null
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE NamedIndividual SYSTEM "../../DTD">
+<NamedIndividual name="https://www.w3.org/TR/rdf11-schema/">
+       <label xml:lang="en">R·D·F Schema 1.1</label>
+       <comment xml:lang="en">
+               <p>
+                       R·D·F Schema introduces itself as providing “a data‐modelling vocabulary for R·D·F data”.
+                       This is correct, but it is important to understand that it performs this function in two different ways :⁠—
+               </p>
+               <list>
+                       <item>
+                               <p>
+                                       It provides properties for modelling R·D·F vocabularies in terms of classes, properties, literals, and the relationships between them.
+                               </p>
+                               <p>
+                                       It provides data structures which are useful for representing data in R·D·F, and a few additional utility properties for expressing common concepts.
+                               </p>
+                       </item>
+               </list>
+               <p>
+                       The terms in the first category are effectively subsumed within <ptr target="(OWL2-MAPPING)"/>, and are not defined here (they are axiomatic).
+                       The terms in the second category, on the other hand, are all given definitions in this ontology as they are broadly useful.
+                       In addition to being defined within the core <code>rdfs:</code> name·space, R·D·F Schema also provides the formal definition for many terms in the <code>rdf:</code> one.
+               </p>
+       </comment>
+       <type>
+               <resource name="dcterms:BibliographicResource"/>
+       </type>
+       <type>
+               <resource name="dcterms:Standard"/>
+       </type>
+       <type>
+               <resource name="foaf:Document"/>
+       </type>
+</NamedIndividual>
diff --git a/data/named_individuals/_RFC4287_ b/data/named_individuals/_RFC4287_
new file mode 100644 (file)
index 0000000..1d5246b
--- /dev/null
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE NamedIndividual SYSTEM "../../DTD">
+<NamedIndividual name="http://www.rfc-editor.org/info/rfc4287">
+       <label xml:lang="en">The Atom Syndication Format</label>
+       <type>
+               <resource name="dcterms:BibliographicResource"/>
+       </type>
+       <type>
+               <resource name="dcterms:Standard"/>
+       </type>
+       <type>
+               <resource name="foaf:Document"/>
+       </type>
+</NamedIndividual>
diff --git a/data/named_individuals/_RFC5147_ b/data/named_individuals/_RFC5147_
new file mode 100644 (file)
index 0000000..aaea995
--- /dev/null
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE NamedIndividual SYSTEM "../../DTD">
+<NamedIndividual name="http://www.rfc-editor.org/info/rfc5147">
+       <label xml:lang="en">Plaintext Fragment Identifiers</label>
+       <type>
+               <resource name="dcterms:BibliographicResource"/>
+       </type>
+       <type>
+               <resource name="dcterms:Standard"/>
+       </type>
+       <type>
+               <resource name="foaf:Document"/>
+       </type>
+</NamedIndividual>
diff --git a/data/named_individuals/_RFC6838_ b/data/named_individuals/_RFC6838_
new file mode 100644 (file)
index 0000000..29cd5e3
--- /dev/null
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE NamedIndividual SYSTEM "../../DTD">
+<NamedIndividual name="http://www.rfc-editor.org/info/rfc6838">
+       <label xml:lang="en">Media Type Specifications</label>
+       <type>
+               <resource name="dcterms:BibliographicResource"/>
+       </type>
+       <type>
+               <resource name="dcterms:Standard"/>
+       </type>
+       <type>
+               <resource name="foaf:Document"/>
+       </type>
+</NamedIndividual>
diff --git a/data/named_individuals/_RFC7303_ b/data/named_individuals/_RFC7303_
new file mode 100644 (file)
index 0000000..3b6cf67
--- /dev/null
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE NamedIndividual SYSTEM "../../DTD">
+<NamedIndividual name="http://www.rfc-editor.org/info/rfc7303">
+       <label xml:lang="en">X·M·L Media Types</label>
+       <type>
+               <resource name="dcterms:BibliographicResource"/>
+       </type>
+       <type>
+               <resource name="dcterms:Standard"/>
+       </type>
+       <type>
+               <resource name="foaf:Document"/>
+       </type>
+</NamedIndividual>
diff --git a/data/named_individuals/_RFC8288_ b/data/named_individuals/_RFC8288_
new file mode 100644 (file)
index 0000000..6dc6bfb
--- /dev/null
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE NamedIndividual SYSTEM "../../DTD">
+<NamedIndividual name="http://www.rfc-editor.org/info/rfc8288">
+       <label xml:lang="en">Web Linking</label>
+       <type>
+               <resource name="dcterms:BibliographicResource"/>
+       </type>
+       <type>
+               <resource name="dcterms:Standard"/>
+       </type>
+       <type>
+               <resource name="foaf:Document"/>
+       </type>
+</NamedIndividual>
diff --git a/data/named_individuals/_SHACL_ b/data/named_individuals/_SHACL_
new file mode 100644 (file)
index 0000000..6730f14
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE NamedIndividual SYSTEM "../../DTD">
+<NamedIndividual name="https://www.w3.org/TR/shacl/">
+       <label xml:lang="en">Shacl</label>
+       <comment xml:lang="en">
+               <p>
+                       The Shapes Constraint Language, or Shacl, provides a vocabulary for defining constraints on R·D·F graphs.
+                       In this sense, it is very useful as a base model for describing how vocabularies should be used, but not very useful for modelling concepts within the vocabularies themselves.
+                       Consequently, most terms from Shacl are not defined here.
+                       However, this ontology does annotate <em>itself</em> with <ptr target="sh:declare"/>, to declare which prefixes it recommends and uses for various name·spaces.
+               </p>
+       </comment>
+       <type>
+               <resource name="dcterms:BibliographicResource"/>
+       </type>
+       <type>
+               <resource name="dcterms:Standard"/>
+       </type>
+       <type>
+               <resource name="foaf:Document"/>
+       </type>
+</NamedIndividual>
diff --git a/data/named_individuals/_SKOS_ b/data/named_individuals/_SKOS_
new file mode 100644 (file)
index 0000000..11e8599
--- /dev/null
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE NamedIndividual SYSTEM "../../DTD">
+<NamedIndividual name="https://www.w3.org/TR/skos-reference/">
+       <label xml:lang="en">Skos</label>
+       <comment xml:lang="en">
+               <p>
+                       The Simple Knowledge Organization System, or Skos, provides a core vocabulary for defining and organizing pieces of knowledge, known as <ref target="skos:Concept">Concepts</ref>.
+                       The model is generic enough to be usable for everything from metadata tags to thesauruses, and is particularly useful as the basis for more specialized knowledge models.
+               </p>
+               <p>
+                       Skos expresses constraints (i·e, integrety conditions) on some of its terms which are not formally expressible in Owl.
+                       Some constraints, like those involving transitive properties, are expressible but not reasonable, and so are left out of this ontology.
+                       Constraints are only minimally useful in an ontological sense anyway, as reasoning systems make for poor validators.
+               </p>
+               <p>
+                       Skos formally defines its simple labels as annotation properties, meaning they cannot be reasoned about.
+                       Skos·X·L (defined in an appendix to the Skos specification) instead defines labels using objects, enabling reasoning.<note n="1">
+                               <p>
+                                       Skos·X·L also defines simple labels in terms of property chains of complex ones, which is practically impossible if the simple labels are truly annotation properties.
+                                       This ontology chooses to resolve this tension by treating the relationship between simple and complex properties as informal.
+                               </p>
+                       </note>
+                       Skos·X·L labels are generally recommended anyway, as the ability to attach additional properties to them is often useful.
+               </p>
+               <p>
+                       This ontology includes all of Skos, as it is incredibly useful baseline model for knowledge organization and representation.
+               </p>
+       </comment>
+       <type>
+               <resource name="dcterms:BibliographicResource"/>
+       </type>
+       <type>
+               <resource name="dcterms:Standard"/>
+       </type>
+       <type>
+               <resource name="foaf:Document"/>
+       </type>
+</NamedIndividual>
diff --git a/data/named_individuals/_SVG2_ b/data/named_individuals/_SVG2_
new file mode 100644 (file)
index 0000000..f1e8fe2
--- /dev/null
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE NamedIndividual SYSTEM "../../DTD">
+<NamedIndividual name="https://www.w3.org/TR/SVG2/">
+       <label xml:lang="en">S·V·G 2</label>
+       <type>
+               <resource name="dcterms:BibliographicResource"/>
+       </type>
+       <type>
+               <resource name="dcterms:Standard"/>
+       </type>
+       <type>
+               <resource name="foaf:Document"/>
+       </type>
+</NamedIndividual>
diff --git a/data/named_individuals/_SWAP-PIM_ b/data/named_individuals/_SWAP-PIM_
new file mode 100644 (file)
index 0000000..8cbdf1e
--- /dev/null
@@ -0,0 +1,133 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE NamedIndividual SYSTEM "../../DTD">
+<NamedIndividual name="https://www.w3.org/2000/10/swap/pim/">
+       <label xml:lang="en">Swap Pim</label>
+       <comment xml:lang="en">
+               <p>
+                       Swap (the <ref target="https://github.com/linkeddata/swap">Semantic Web Application Platform</ref>) was a very early set of tools for working with linked data, created by timbl.
+                       It came packaged with a number of early, experimental, and frankly demo vocabularies, provided as Notation·3 files in the <code>pim/</code> directory (your guess is as good as mine).
+               </p>
+               <p>
+                       For the most part, the problems that these vocabularies were trying to solve have now been better solved else·where.
+                       Never·the·less, some terms are still useful, or at least generally compatible with those from later vocabularies.
+                       Those terms are defined here.
+               </p>
+               <p>
+                       The vocabularies encompassed by Swap Pim include :⁠—
+               </p>
+               <list>
+                       <item>
+                               <p>
+                                       <strong>Contact:</strong>
+                                       This vocabulary is, by far, the most widely‐used, and most likely to be useful, vocabulary in this set:
+                                       <ptr target="(FOAF)"/> specifically calls out <ptr target="contact:nearestAirport"/> as an alternative to <ptr target="foaf:based_near"/>.
+                                       Most of its terms are included in this ontology, but a few are not :⁠—
+                               </p>
+                               <list>
+                                       <item>
+                                               <p>
+                                                       <resource name="contact:title"/> and <resource name="contact:departmentName"/> should be properties of roles, not people; as it stands, they become unusable if a person is ever involved in more than one organization at the same time.
+                                               </p>
+                                       </item>
+                                       <item>
+                                               <p>
+                                                       <resource name="contact:emailAddress"/>, <resource name="contact:mailboxURI"/>, and <resource name="contact:homePageAddress"/> are explicitly discouraged in their original definitions.
+                                               </p>
+                                       </item>
+                                       <item>
+                                               <p>
+                                                       <resource name="contact:Male"/> and <resource name="contact:Female"/>, as classes, are undocumented and likely misguided.
+                                               </p>
+                                       </item>
+                               </list>
+                       </item>
+                       <item>
+                               <p>
+                                       <strong>Doc:</strong>
+                                       This vocabulary revolves around properties for describing <ref target="doc:Work">Works</ref>, which are defined essentially as pieces of intellectual property.
+                                       This is a problematic definition which limits the utility of the rest of the vocabulary.
+                                       This ontology defines only the problematic Work class itself, as well as the <ref target="doc:version">version</ref> property (but only one of the two very different definitions provided), which is not Work‐specific.
+                               </p>
+                       </item>
+                       <item>
+                               <p>
+                                       <strong>I·Calendar:</strong>
+                                       This is a small and experimental attempt at encoding calendaring information into R·D·F.
+                                       W·3·C later created <ref target="https://www.w3.org/TR/rdfcal/">R·D·F Calendar</ref>, which is a much more fully‐fleshed‐out solution and should be used instead.
+                                       Both are considered out‐of‐scope for this ontology.
+                               </p>
+                       </item>
+                       <item>
+                               <p>
+                                       <strong>Mortgage:</strong>
+                                       This is a vocabulary aimed at representing the information in a “e·g Bank of America online mortgage statement” in R·D·F.
+                                       It is probably not sufficient to the task and regardless is out‐of‐scope for this ontology, which does not care about finances.
+                               </p>
+                       </item>
+                       <item>
+                               <p>
+                                       <strong>Qif:</strong>
+                                       This is a vocabulary targeted at representing information for personal finances.
+                                       It is very unclear why some·one would ever want to make their personal finances a part of the Semantic Web, so this vocabulary has been deemed out‐of‐scope for this ontology.
+                               </p>
+                       </item>
+                       <item>
+                               <p>
+                                       <strong>Track:</strong>
+                                       This is a very simple vocabulary for issue tracking.
+                                       It suffers from a number of flaws :⁠—
+                               </p>
+                               <list>
+                                       <item>
+                                               <p>
+                                                       The properties for title and summary have their domain restricted to issues, which is needlessly restrictive.
+                                               </p>
+                                       </item>
+                                       <item>
+                                               <p>
+                                                       <code>track:documentConcerned</code> is a bad name; issues may be filed against things which are not conventionally thought of as “documents”.
+                                                       The actual range of this property is <ptr target="doc:Work"/>.
+                                               </p>
+                                       </item>
+                                       <item>
+                                               <p>
+                                                       Issue lifecycle is determined via a number of properties which point at Works that denote the change.
+                                                       Correct interpretation requires that these Works be given sequential publication dates (or be sequenced thru some other mechanism).
+                                                       A better model would be to have a single property which associates the issue with a dated <ref target="anno:SpecificResource">Specific Resource</ref>, whose <ref target="anno:purpose">purpose</ref> provides the effect of the change.
+                                                       Or, to link issues to dated events, rather than of Works.
+                                               </p>
+                                       </item>
+                               </list>
+                               <p>
+                                       Considering basically every aspect of this vocabulary has flaws, there¦s really no good argument for including it.
+                                       <ptr target="(EVO-ONT)"/> provides a much better model for issue tracking, building on W·3·C¦s.
+                               </p>
+                       </item>
+                       <item>
+                               <p>
+                                       <strong>Travel Terms:</strong>
+                                       This vocabulary defines terms for modelling air travel via commercial airlines.
+                                       There¦s not anything obviously wrong with it, but it¦s out‐of‐scope for this ontology.
+                               </p>
+                       </item>
+                       <item>
+                               <p>
+                                       <strong>U·S·P·S:</strong>
+                                       This vocabulary aims to define terms for representing in R·D·F the specific fields used by the United States Postal Service, with the goal of modelling the specific mailing locations used by specific pieces of physical mail.
+                                       This ontology does not attempt to model specific pieces of physical mail, so this vocabulary is out of scope.
+                                       For describing the locations and addresses of people, to the extent that is needed, better vocabularies exist.
+                               </p>
+                       </item>
+               </list>
+               <p>
+                       In cases where a property in Swap Pim is defined as equivalent to another property in a different name·space, it is strongly recommended that you use the other property instead.
+               </p>
+       </comment>
+       <type>
+               <resource name="dcterms:BibliographicResource"/>
+       </type>
+</NamedIndividual>
diff --git a/data/named_individuals/_VOCAB-STATUS_ b/data/named_individuals/_VOCAB-STATUS_
new file mode 100644 (file)
index 0000000..9bf8849
--- /dev/null
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE NamedIndividual SYSTEM "../../DTD">
+<NamedIndividual name="https://www.w3.org/2003/06/sw-vocab-status/note">
+       <label xml:lang="en">Term‐Centric Semantic Web Vocabulary Annotations</label>
+       <comment xml:lang="en">
+               <p>
+                       This “(editors draft of a potential) W·3·C Interest Group Note” defines only a single annotation property, <ptr target="vocabstatus:term_status"/>.
+                       It was created for use with <ptr target="(FOAF)"/> to annotate classes and properties as they evolved and give some hint as to the maturity of their usage.
+               </p>
+               <p>
+                       This ontology defines <ptr target="vocabstatus:term_status"/>, but only uses it with terms in the <code>ladys:</code> name·space.
+                       Inclusion of terms from other name·spaces into this ontology implies at least a nominal level of stability.
+               </p>
+       </comment>
+       <type>
+               <resource name="dcterms:BibliographicResource"/>
+       </type>
+       <type>
+               <resource name="dcterms:Standard"/>
+       </type>
+       <type>
+               <resource name="foaf:Document"/>
+       </type>
+</NamedIndividual>
diff --git a/data/named_individuals/anno¦assessing b/data/named_individuals/anno¦assessing
new file mode 100644 (file)
index 0000000..6700681
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE NamedIndividual SYSTEM "../../DTD">
+<NamedIndividual>
+       <label xml:lang="en">Assessing</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="anno:Motivation">Motivation</ref> for providing an assessment of something.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(ANNO)" fragment="assessing"/>
+       </isDefinedBy>
+       <type>
+               <resource name="anno:Motivation"/>
+       </type>
+       <inScheme>
+               <resource name="anno:motivationScheme"/>
+       </inScheme>
+</NamedIndividual>
diff --git a/data/named_individuals/anno¦autoDirection b/data/named_individuals/anno¦autoDirection
new file mode 100644 (file)
index 0000000..3ea0e12
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE NamedIndividual SYSTEM "../../DTD">
+<NamedIndividual>
+       <label xml:lang="en">Auto Direction</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="anno:Direction">Direction</ref> indicating that the base text direction should automatically be determined from its content.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(ANNO)" fragment="autodirection"/>
+       </isDefinedBy>
+       <type>
+               <resource name="anno:Direction"/>
+       </type>
+</NamedIndividual>
diff --git a/data/named_individuals/anno¦bookmarking b/data/named_individuals/anno¦bookmarking
new file mode 100644 (file)
index 0000000..16f256a
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE NamedIndividual SYSTEM "../../DTD">
+<NamedIndividual>
+       <label xml:lang="en">Bookmarking</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="anno:Motivation">Motivation</ref> for bookmarking something.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(ANNO)" fragment="bookmarking"/>
+       </isDefinedBy>
+       <type>
+               <resource name="anno:Motivation"/>
+       </type>
+       <inScheme>
+               <resource name="anno:motivationScheme"/>
+       </inScheme>
+</NamedIndividual>
diff --git a/data/named_individuals/anno¦classifying b/data/named_individuals/anno¦classifying
new file mode 100644 (file)
index 0000000..1135540
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE NamedIndividual SYSTEM "../../DTD">
+<NamedIndividual>
+       <label xml:lang="en">Classifying</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="anno:Motivation">Motivation</ref> for classifying something.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(ANNO)" fragment="classifying"/>
+       </isDefinedBy>
+       <type>
+               <resource name="anno:Motivation"/>
+       </type>
+       <inScheme>
+               <resource name="anno:motivationScheme"/>
+       </inScheme>
+</NamedIndividual>
diff --git a/data/named_individuals/anno¦commenting b/data/named_individuals/anno¦commenting
new file mode 100644 (file)
index 0000000..d365ea9
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE NamedIndividual SYSTEM "../../DTD">
+<NamedIndividual>
+       <label xml:lang="en">Commenting</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="anno:Motivation">Motivation</ref> for commenting on something.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(ANNO)" fragment="classifying"/>
+       </isDefinedBy>
+       <type>
+               <resource name="anno:Motivation"/>
+       </type>
+       <inScheme>
+               <resource name="anno:motivationScheme"/>
+       </inScheme>
+</NamedIndividual>
diff --git a/data/named_individuals/anno¦describing b/data/named_individuals/anno¦describing
new file mode 100644 (file)
index 0000000..f8ce9d5
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE NamedIndividual SYSTEM "../../DTD">
+<NamedIndividual>
+       <label xml:lang="en">Describing</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="anno:Motivation">Motivation</ref> for describing something.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(ANNO)" fragment="classifying"/>
+       </isDefinedBy>
+       <type>
+               <resource name="anno:Motivation"/>
+       </type>
+       <inScheme>
+               <resource name="anno:motivationScheme"/>
+       </inScheme>
+</NamedIndividual>
diff --git a/data/named_individuals/anno¦editing b/data/named_individuals/anno¦editing
new file mode 100644 (file)
index 0000000..79e8b77
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE NamedIndividual SYSTEM "../../DTD">
+<NamedIndividual>
+       <label xml:lang="en">Editing</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="anno:Motivation">Motivation</ref> for editing something.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(ANNO)" fragment="classifying"/>
+       </isDefinedBy>
+       <type>
+               <resource name="anno:Motivation"/>
+       </type>
+       <inScheme>
+               <resource name="anno:motivationScheme"/>
+       </inScheme>
+</NamedIndividual>
diff --git a/data/named_individuals/anno¦highlighting b/data/named_individuals/anno¦highlighting
new file mode 100644 (file)
index 0000000..1cf8d90
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE NamedIndividual SYSTEM "../../DTD">
+<NamedIndividual>
+       <label xml:lang="en">Hiliting</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="anno:Motivation">Motivation</ref> for hiliting something.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(ANNO)" fragment="highlighting"/>
+       </isDefinedBy>
+       <type>
+               <resource name="anno:Motivation"/>
+       </type>
+       <inScheme>
+               <resource name="anno:motivationScheme"/>
+       </inScheme>
+</NamedIndividual>
diff --git a/data/named_individuals/anno¦identifying b/data/named_individuals/anno¦identifying
new file mode 100644 (file)
index 0000000..def26f7
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE NamedIndividual SYSTEM "../../DTD">
+<NamedIndividual>
+       <label xml:lang="en">Identifying</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="anno:Motivation">Motivation</ref> for assigning an identity to something.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(ANNO)" fragment="identifying"/>
+       </isDefinedBy>
+       <type>
+               <resource name="anno:Motivation"/>
+       </type>
+       <inScheme>
+               <resource name="anno:motivationScheme"/>
+       </inScheme>
+</NamedIndividual>
diff --git a/data/named_individuals/anno¦linking b/data/named_individuals/anno¦linking
new file mode 100644 (file)
index 0000000..ed1433f
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE NamedIndividual SYSTEM "../../DTD">
+<NamedIndividual>
+       <label xml:lang="en">Linking</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="anno:Motivation">Motivation</ref> for creating a link to something.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(ANNO)" fragment="linking"/>
+       </isDefinedBy>
+       <type>
+               <resource name="anno:Motivation"/>
+       </type>
+       <inScheme>
+               <resource name="anno:motivationScheme"/>
+       </inScheme>
+</NamedIndividual>
diff --git a/data/named_individuals/anno¦ltrDirection b/data/named_individuals/anno¦ltrDirection
new file mode 100644 (file)
index 0000000..ce2208d
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE NamedIndividual SYSTEM "../../DTD">
+<NamedIndividual>
+       <label xml:lang="en">Left‐To‐Right Direction</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="anno:Direction">Direction</ref> indicating that the base text direction should be left‐to‐right.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(ANNO)" fragment="ltrdirection"/>
+       </isDefinedBy>
+       <type>
+               <resource name="anno:Direction"/>
+       </type>
+</NamedIndividual>
diff --git a/data/named_individuals/anno¦moderating b/data/named_individuals/anno¦moderating
new file mode 100644 (file)
index 0000000..bcd1f7f
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE NamedIndividual SYSTEM "../../DTD">
+<NamedIndividual>
+       <label xml:lang="en">Moderating</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="anno:Motivation">Motivation</ref> for assigning a quality or status to something.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(ANNO)" fragment="moderating"/>
+       </isDefinedBy>
+       <type>
+               <resource name="anno:Motivation"/>
+       </type>
+       <inScheme>
+               <resource name="anno:motivationScheme"/>
+       </inScheme>
+</NamedIndividual>
diff --git a/data/named_individuals/anno¦motivationScheme b/data/named_individuals/anno¦motivationScheme
new file mode 100644 (file)
index 0000000..5ebdba8
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE NamedIndividual SYSTEM "../../DTD">
+<NamedIndividual>
+       <label xml:lang="en">Motivation Scheme</label>
+       <comment xml:lang="en">
+               <p>
+                       The <ref target="skos:ConceptScheme">Concept Scheme</ref> containing the <ref target="anno:Motivation">Motivations</ref> assigned by <ptr target="(ANNO)"/>.
+               </p>
+               <p>
+                       This individual isn¦t really documented, but it is informally attested in a figure on extending Motivations.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(ANNO)" fragment="fig-extending-motivations"/>
+       </isDefinedBy>
+       <type>
+               <resource name="skos:ConceptScheme"/>
+       </type>
+</NamedIndividual>
diff --git a/data/named_individuals/anno¦questioning b/data/named_individuals/anno¦questioning
new file mode 100644 (file)
index 0000000..6be90b6
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE NamedIndividual SYSTEM "../../DTD">
+<NamedIndividual>
+       <label xml:lang="en">Questioning</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="anno:Motivation">Motivation</ref> for asking a question about something.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(ANNO)" fragment="questioning"/>
+       </isDefinedBy>
+       <type>
+               <resource name="anno:Motivation"/>
+       </type>
+       <inScheme>
+               <resource name="anno:motivationScheme"/>
+       </inScheme>
+</NamedIndividual>
diff --git a/data/named_individuals/anno¦replying b/data/named_individuals/anno¦replying
new file mode 100644 (file)
index 0000000..3f0423c
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE NamedIndividual SYSTEM "../../DTD">
+<NamedIndividual>
+       <label xml:lang="en">Replying</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="anno:Motivation">Motivation</ref> for replying to something.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(ANNO)" fragment="replying"/>
+       </isDefinedBy>
+       <type>
+               <resource name="anno:Motivation"/>
+       </type>
+       <inScheme>
+               <resource name="anno:motivationScheme"/>
+       </inScheme>
+</NamedIndividual>
diff --git a/data/named_individuals/anno¦rtlDirection b/data/named_individuals/anno¦rtlDirection
new file mode 100644 (file)
index 0000000..0af6e5d
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE NamedIndividual SYSTEM "../../DTD">
+<NamedIndividual>
+       <label xml:lang="en">Right‐To‐Left Direction</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="anno:Direction">Direction</ref> indicating that the base text direction should be right‐to‐left.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(ANNO)" fragment="rtldirection"/>
+       </isDefinedBy>
+       <type>
+               <resource name="anno:Direction"/>
+       </type>
+</NamedIndividual>
diff --git a/data/named_individuals/anno¦tagging b/data/named_individuals/anno¦tagging
new file mode 100644 (file)
index 0000000..2c6be29
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE NamedIndividual SYSTEM "../../DTD">
+<NamedIndividual>
+       <label xml:lang="en">Tagging</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="anno:Motivation">Motivation</ref> for applying a tag to something.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(ANNO)" fragment="tagging"/>
+       </isDefinedBy>
+       <type>
+               <resource name="anno:Motivation"/>
+       </type>
+       <inScheme>
+               <resource name="anno:motivationScheme"/>
+       </inScheme>
+</NamedIndividual>
diff --git a/data/named_individuals/rdf¦nil b/data/named_individuals/rdf¦nil
new file mode 100644 (file)
index 0000000..5d1c19d
--- /dev/null
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE NamedIndividual SYSTEM "../../DTD">
+<NamedIndividual>
+       <label xml:lang="en">Nil</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="rdf:List">List</ref> of zero elements.
+               </p>
+               <p>
+                       There are no ontological restrictions on Nil, but the expectation is that it has no <ref target="rdf:first">first element</ref> or <ref target="rdf:rest">rest</ref>.
+                       Conformance to this expectation is strongly recommended.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(RDF11-SCHEMA)" fragment="ch_nil"/>
+       </isDefinedBy>
+       <type>
+               <resource name="rdf:List"/>
+       </type>
+</NamedIndividual>
diff --git a/data/named_individuals/rel¦alternate b/data/named_individuals/rel¦alternate
new file mode 100644 (file)
index 0000000..d00f1a4
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE NamedIndividual SYSTEM "../../DTD">
+<NamedIndividual>
+       <label xml:lang="en">Alternate</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="awol:RelationType">Relation Type</ref> indicating an alternate version of a thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(RFC4287)"/>
+       </isDefinedBy>
+       <type>
+               <resource name="awol:RelationType"/>
+       </type>
+</NamedIndividual>
diff --git a/data/object_properties/anno¦canonical b/data/object_properties/anno¦canonical
new file mode 100644 (file)
index 0000000..d26e40f
--- /dev/null
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty functional="yes">
+       <label xml:lang="en">has canonical</label>
+       <comment xml:lang="en">
+               <p>
+                       The authoritative version of this thing.
+               </p>
+               <p>
+                       There is no requirement that the thing which is pointed to by this property be accessible or dereferencable, only that statements <em>about</em> that thing be considered the “canonical” statements regarding the underlying concept that this thing represents.
+                       Note, however, that this thing and the “canonical” thing are kept formally distinct; they may have different properties.
+               </p>
+               <p>
+                       This property ultimately serves two purposes :⁠—
+               </p>
+               <list>
+                       <item>
+                               <p>
+                                       It helps to establish identity of underlying concepts, in that two things with the same canonical can be assumed to be different noncanonical versions of the same canonical thing.
+                               </p>
+                       </item>
+                       <item>
+                               <p>
+                                       When a means of dereferencing the canonical thing is available, it allows processors to use it in place of this thing in situations where that would be desirable.
+                               </p>
+                       </item>
+               </list>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(ANNO)" fragment="canonical"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="dcterms:isVersionOf"/>
+       </subPropertyOf>
+</ObjectProperty>
diff --git a/data/object_properties/anno¦hasBody b/data/object_properties/anno¦hasBody
new file mode 100644 (file)
index 0000000..4b94a91
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has body</label>
+       <comment xml:lang="en">
+               <p>
+                       A body of this <ref target="anno:Annotation">Annotation</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(ANNO)" fragment="hasbody"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="anno:Annotation"/>
+       </domain>
+</ObjectProperty>
diff --git a/data/object_properties/anno¦hasEndSelector b/data/object_properties/anno¦hasEndSelector
new file mode 100644 (file)
index 0000000..7d414ea
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty functional="yes">
+       <label xml:lang="en">has end selector</label>
+       <comment xml:lang="en">
+               <p>
+                       The <ref target="anno:Selector">Selector</ref> which ends this <ref target="anno:RangeSelector">Range Selector</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(ANNO)" fragment="hasendselector"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="anno:RangeSelector"/>
+       </domain>
+       <range>
+               <resource name="anno:Selector"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/anno¦hasPurpose b/data/object_properties/anno¦hasPurpose
new file mode 100644 (file)
index 0000000..5c6d6e9
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has purpose</label>
+       <comment xml:lang="en">
+               <p>
+                       The <ref target="anno:Motivation">Motivation</ref> behind this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(ANNO)" fragment="haspurpose"/>
+       </isDefinedBy>
+       <range>
+               <resource name="anno:Motivation"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/anno¦hasScope b/data/object_properties/anno¦hasScope
new file mode 100644 (file)
index 0000000..9230080
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has scope</label>
+       <comment xml:lang="en">
+               <p>
+                       A scope or context conveyed as part of the specificity of this <ref target="anno:SpecificResource">Specific Resource</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(ANNO)" fragment="hasscope"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="anno:SpecificResource"/>
+       </domain>
+</ObjectProperty>
diff --git a/data/object_properties/anno¦hasSelector b/data/object_properties/anno¦hasSelector
new file mode 100644 (file)
index 0000000..ac64709
--- /dev/null
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has selector</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="anno:Selector">Selector</ref> which describes the selection of this <ref target="anno:ResourceSelection">Resource Selection</ref> within its <ref target="anno:hasSource">source</ref>.
+               </p>
+               <p>
+                       A Resource Selection may have multiple Selectors; in this case, the Selectors are treated as broadly equivalent (understanding that they may have subtly different resolutions or semantics); an application may choose freely between them.
+                       To take the intersection of multiple Selectors, one must be <ref target="anno:refinedBy">refined by</ref> the other.
+                       When a Selector only applies to a particular <ref target="anno:State">State</ref>, the State must be refined by that Selector.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(ANNO)" fragment="hasselector"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="anno:ResourceSelection"/>
+       </domain>
+       <range>
+               <resource name="anno:Selector"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/anno¦hasSource b/data/object_properties/anno¦hasSource
new file mode 100644 (file)
index 0000000..8eb5d44
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty functional="yes">
+       <label xml:lang="en">has source</label>
+       <comment xml:lang="en">
+               <p>
+                       The resource that this <ref target="anno:ResourceSelection">Resource Selection</ref> selects within.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(ANNO)" fragment="hassource"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="anno:ResourceSelection"/>
+       </domain>
+</ObjectProperty>
diff --git a/data/object_properties/anno¦hasStartSelector b/data/object_properties/anno¦hasStartSelector
new file mode 100644 (file)
index 0000000..89575df
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty functional="yes">
+       <label xml:lang="en">has start selector</label>
+       <comment xml:lang="en">
+               <p>
+                       The <ref target="anno:Selector">Selector</ref> which begins this <ref target="anno:RangeSelector">Range Selector</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(ANNO)" fragment="hasstartselector"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="anno:RangeSelector"/>
+       </domain>
+       <range>
+               <resource name="anno:Selector"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/anno¦hasState b/data/object_properties/anno¦hasState
new file mode 100644 (file)
index 0000000..e1efef4
--- /dev/null
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has state</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="anno:State">State</ref> which describes the state of this <ref target="anno:ResourceSelection">Resource Selection</ref> within its <ref target="anno:hasSource">source</ref>.
+               </p>
+               <p>
+                       A Resource Selection may have multiple States; in this case, the States are treated as broadly equivalent (understanding that they may have subtly different resolutions or semantics); an application may choose freely between them.
+                       To take the intersection of multiple States, one must be <ref target="anno:refinedBy">refined by</ref> the other.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(ANNO)" fragment="hasstate"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="anno:ResourceSelection"/>
+       </domain>
+       <range>
+               <resource name="anno:State"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/anno¦hasTarget b/data/object_properties/anno¦hasTarget
new file mode 100644 (file)
index 0000000..4844c81
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has target</label>
+       <comment xml:lang="en">
+               <p>
+                       A target of this <ref target="anno:Annotation">Annotation</ref>.
+               </p>
+               <p>
+                       An Annotation may have multiple targets; the intended meaning is the same as if equivalent Annotations had been created for each target separately.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(ANNO)" fragment="hastarget"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="anno:Annotation"/>
+       </domain>
+</ObjectProperty>
diff --git a/data/object_properties/anno¦motivatedBy b/data/object_properties/anno¦motivatedBy
new file mode 100644 (file)
index 0000000..31aada3
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">motivated by</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="anno:Motivation">Motivation</ref> behind this <ref target="anno:Annotation">Annotation</ref>.
+               </p>
+               <p>
+                       It is questionable how this property differs from <ptr target="anno:hasPurpose"/>, but it is the conventional way of associating Motivations with Annotations according to <ptr target="(ANNO)"/>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(ANNO)" fragment="motivatedby"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="anno:Annotation"/>
+       </domain>
+       <range>
+               <resource name="anno:Motivation"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/anno¦refinedBy b/data/object_properties/anno¦refinedBy
new file mode 100644 (file)
index 0000000..df8e654
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">refined by</label>
+       <comment xml:lang="en">
+               <p>
+                       A resource which refines this resource.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(ANNO)" fragment="refinedby"/>
+       </isDefinedBy>
+</ObjectProperty>
diff --git a/data/object_properties/anno¦textDirection b/data/object_properties/anno¦textDirection
new file mode 100644 (file)
index 0000000..99a0e68
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has text direction</label>
+       <comment xml:lang="en">
+               <p>
+                       The base <ref target="anno:Direction">Direction</ref> for this resource.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(ANNO)" fragment="textdirection"/>
+       </isDefinedBy>
+       <range>
+               <resource name="anno:Direction"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/anno¦via b/data/object_properties/anno¦via
new file mode 100644 (file)
index 0000000..2dce028
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">via</label>
+       <comment xml:lang="en">
+               <p>
+                       The thing from which this thing was derived.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(ANNO)" fragment="via"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="dcterms:isVersionOf"/>
+       </subPropertyOf>
+       <subPropertyOf>
+               <resource name="dcterms:source"/>
+       </subPropertyOf>
+</ObjectProperty>
diff --git a/data/object_properties/awol¦aggregates b/data/object_properties/awol¦aggregates
new file mode 100644 (file)
index 0000000..861ad59
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">aggregates</label>
+       <comment xml:lang="en">
+               <p>
+                       An <ref target="awol:Entry">Entry</ref> contained in this thing which did not originate with it.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(AWOL)" fragment="aggregates"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="awol:contains"/>
+       </subPropertyOf>
+</ObjectProperty>
diff --git a/data/object_properties/awol¦author b/data/object_properties/awol¦author
new file mode 100644 (file)
index 0000000..2760e54
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has author</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="awol:Person">Person</ref> responsible for authoring this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(AWOL)" fragment="author"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="dcterms:creator"/>
+       </subPropertyOf>
+       <subPropertyOf>
+               <resource name="awol:contributor"/>
+       </subPropertyOf>
+</ObjectProperty>
diff --git a/data/object_properties/awol¦category b/data/object_properties/awol¦category
new file mode 100644 (file)
index 0000000..b53d9b0
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has category</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="awol:Category">Category</ref> to which this thing belongs.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(AWOL)" fragment="category"/>
+       </isDefinedBy>
+       <range>
+               <resource name="awol:Category"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/awol¦contains b/data/object_properties/awol¦contains
new file mode 100644 (file)
index 0000000..9aa8e24
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">contains</label>
+       <comment xml:lang="en">
+               <p>
+                       An <ref target="awol:Entry">Entry</ref> contained in this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(AWOL)" fragment="contains"/>
+       </isDefinedBy>
+       <range>
+               <resource name="awol:Entry"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/awol¦content b/data/object_properties/awol¦content
new file mode 100644 (file)
index 0000000..98140b3
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty functional="yes">
+       <label xml:lang="en">has content</label>
+       <comment xml:lang="en">
+               <p>
+                       The <ref target="awol:Content">Content</ref> for this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(AWOL)" fragment="content"/>
+       </isDefinedBy>
+       <range>
+               <resource name="awol:Content"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/awol¦contributor b/data/object_properties/awol¦contributor
new file mode 100644 (file)
index 0000000..bf884dc
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has contributor</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="awol:Person">Person</ref> responsible for contributing to this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(AWOL)" fragment="contributor"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="dcterms:contributor"/>
+       </subPropertyOf>
+       <range>
+               <resource name="awol:Person"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/awol¦email b/data/object_properties/awol¦email
new file mode 100644 (file)
index 0000000..d19db90
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has email</label>
+       <comment xml:lang="en">
+               <p>
+                       An electronic mailbox for this <ref target="awol:Person">Person</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(AWOL)" fragment="email"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="contact:mailbox"/>
+       </subPropertyOf>
+       <domain>
+               <resource name="awol:Person"/>
+       </domain>
+</ObjectProperty>
diff --git a/data/object_properties/awol¦entry b/data/object_properties/awol¦entry
new file mode 100644 (file)
index 0000000..281dca5
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty inverseFunctional="yes">
+       <label xml:lang="en">has entry</label>
+       <comment xml:lang="en">
+               <p>
+                       An <ref target="awol:Entry">Entry</ref> contained in this <ref target="awol:Feed">Feed</ref>, which originated with it.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(AWOL)" fragment="entry"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="awol:contains"/>
+       </subPropertyOf>
+</ObjectProperty>
diff --git a/data/object_properties/awol¦generator b/data/object_properties/awol¦generator
new file mode 100644 (file)
index 0000000..eca64d3
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has generator</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="awol:Generator">Generator</ref> responsible for generating this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(AWOL)" fragment="generator"/>
+       </isDefinedBy>
+       <range>
+               <resource name="awol:Generator"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/awol¦icon b/data/object_properties/awol¦icon
new file mode 100644 (file)
index 0000000..61a9bcb
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has icon</label>
+       <comment xml:lang="en">
+               <p>
+                       An <ref target="foaf:Image">Image</ref> which serves as an icon for this thing.
+               </p>
+               <p>
+                       <ptr target="(RFC4287)"/> states that icons should be 1∶1.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(AWOL)" fragment="icon"/>
+       </isDefinedBy>
+       <range>
+               <resource name="foaf:Image"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/awol¦link b/data/object_properties/awol¦link
new file mode 100644 (file)
index 0000000..4bd8624
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty inverseFunctional="yes">
+       <label xml:lang="en">has link</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="awol:Link">Link</ref> which has this thing as its <ref target="awol:subject">subject</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(AWOL)" fragment="link"/>
+       </isDefinedBy>
+       <inverseOf>
+               <resource name="awol:subject"/>
+       </inverseOf>
+       <range>
+               <resource name="awol:Link"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/awol¦logo b/data/object_properties/awol¦logo
new file mode 100644 (file)
index 0000000..a11bbb2
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has logo</label>
+       <comment xml:lang="en">
+               <p>
+                       An <ref target="foaf:Image">Image</ref> which serves as a logo for this thing.
+               </p>
+               <p>
+                       <ptr target="(RFC4287)"/> states that logos should be 2∶1.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(AWOL)" fragment="logo"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="foaf:logo"/>
+       </subPropertyOf>
+</ObjectProperty>
diff --git a/data/object_properties/awol¦rel b/data/object_properties/awol¦rel
new file mode 100644 (file)
index 0000000..9e1f946
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty functional="yes">
+       <label xml:lang="en">has link relation</label>
+       <comment xml:lang="en">
+               <p>
+                       The <ref target="awol:RelationType">Relation Type</ref> which characterizes the relationship between the <ref target="awol:subject">subject</ref> of this <ref target="awol:Link">Link</ref> and what it <ref target="awol:to">links to</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(AWOL)" fragment="rel"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="awol:Link"/>
+       </domain>
+       <range>
+               <resource name="awol:RelationType"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/awol¦rights b/data/object_properties/awol¦rights
new file mode 100644 (file)
index 0000000..31c74c2
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has rights</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="awol:TextContent">Text Content</ref> providing a rights statement for this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(AWOL)" fragment="rights"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="dcterms:rights"/>
+       </subPropertyOf>
+       <range>
+               <resource name="awol:TextContent"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/awol¦scheme b/data/object_properties/awol¦scheme
new file mode 100644 (file)
index 0000000..5008254
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty functional="yes">
+       <label xml:lang="en">has scheme</label>
+       <comment xml:lang="en">
+               <p>
+                       The <ref target="skos:ConceptScheme">Concept Scheme</ref> providing the categorization scheme for this <ref target="awol:Category">Category</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(AWOL)" fragment="scheme"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="skos:inScheme"/>
+       </subPropertyOf>
+       <domain>
+               <resource name="awol:Category"/>
+       </domain>
+</ObjectProperty>
diff --git a/data/object_properties/awol¦source b/data/object_properties/awol¦source
new file mode 100644 (file)
index 0000000..732f643
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty functional="yes">
+       <label xml:lang="en">has source feed</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="awol:Feed">Feed</ref> with which this <ref target="awol:Entry">Entry</ref> originated.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(AWOL)" fragment="entry"/>
+       </isDefinedBy>
+       <inverseOf>
+               <resource name="awol:entry"/>
+       </inverseOf>
+       <range>
+               <resource name="awol:Feed"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/awol¦src b/data/object_properties/awol¦src
new file mode 100644 (file)
index 0000000..d29d772
--- /dev/null
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty functional="yes">
+       <label xml:lang="en">has source</label>
+       <comment xml:lang="en">
+               <p>
+                       The resource which provides the body of this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(AWOL)" fragment="src"/>
+       </isDefinedBy>
+       <domain>
+               <Class>
+                       <complementOf>
+                               <resource name="awol:Link"/>
+                       </complementOf>
+               </Class>
+       </domain>
+</ObjectProperty>
diff --git a/data/object_properties/awol¦subject b/data/object_properties/awol¦subject
new file mode 100644 (file)
index 0000000..de9089f
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty functional="yes">
+       <label xml:lang="en">has subject</label>
+       <comment xml:lang="en">
+               <p>
+                       The resource which is the context for this <ref target="awol:Link">Link</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(AWOL)" fragment="subject"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="awol:Link"/>
+       </domain>
+</ObjectProperty>
diff --git a/data/object_properties/awol¦subtitle b/data/object_properties/awol¦subtitle
new file mode 100644 (file)
index 0000000..7e33e40
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has subtitle</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="awol:TextContent">Text Content</ref> which subtitles or describes this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(AWOL)" fragment="subtitle"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="dcterms:description"/>
+       </subPropertyOf>
+       <range>
+               <resource name="awol:TextContent"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/awol¦summary b/data/object_properties/awol¦summary
new file mode 100644 (file)
index 0000000..f3b0bf3
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has summary</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="awol:TextContent">Text Content</ref> which summarizes this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(AWOL)" fragment="summary"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="dcterms:abstract"/>
+       </subPropertyOf>
+       <range>
+               <resource name="awol:TextContent"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/awol¦title b/data/object_properties/awol¦title
new file mode 100644 (file)
index 0000000..1c82f17
--- /dev/null
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has title</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="awol:TextContent">Text Content</ref> which provides a title for this thing.
+               </p>
+               <p>
+                       While <ref target="awol:Link">Links</ref> can have “titles”, the titles of links are plain literals, not Text Content, and supply human‐readable descriptions, not “titles” proper.
+                       This ontology consequently recommends signifying them with <ptr target="awol:label"/> instead.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(AWOL)" fragment="title"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="dc11:title"/>
+       </subPropertyOf>
+       <range>
+               <resource name="awol:TextContent"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/awol¦to b/data/object_properties/awol¦to
new file mode 100644 (file)
index 0000000..332968f
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty functional="yes">
+       <label xml:lang="en">links to</label>
+       <comment xml:lang="en">
+               <p>
+                       The resource which is the target of this <ref target="awol:Link">Link</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(AWOL)" fragment="to"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="awol:Link"/>
+       </domain>
+</ObjectProperty>
diff --git a/data/object_properties/contact¦address b/data/object_properties/contact¦address
new file mode 100644 (file)
index 0000000..319713f
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has address</label>
+       <comment xml:lang="en">
+               <p>
+                       An <ref target="contact:Address">Address</ref> for this <ref target="contact:ContactLocation">Contact Point</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SWAP-PIM)"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="contact:ContactLocation"/>
+       </domain>
+       <range>
+               <resource name="contact:Address"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/contact¦assistant b/data/object_properties/contact¦assistant
new file mode 100644 (file)
index 0000000..dfcd160
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has assistant</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="contact:Person">Person</ref> who is an assistant to this Person.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SWAP-PIM)"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="contact:Person"/>
+       </domain>
+       <range>
+               <resource name="contact:Person"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/contact¦child b/data/object_properties/contact¦child
new file mode 100644 (file)
index 0000000..b2e5f04
--- /dev/null
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has child</label>
+       <comment xml:lang="en">
+               <p>
+                       A child of this thing.
+               </p>
+               <p>
+                       The definition of “child” is left vague for things which aren¦t <ref target="contact:Person">Persons</ref>.
+                       <ptr target="(SWAP-PIM)"/> requires that the children of Persons also be Persons.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SWAP-PIM)"/>
+       </isDefinedBy>
+</ObjectProperty>
diff --git a/data/object_properties/contact¦emergency b/data/object_properties/contact¦emergency
new file mode 100644 (file)
index 0000000..3c36587
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has emergency contact</label>
+       <comment xml:lang="en">
+               <p>
+                       A mobile <ref target="contact:ContactLocation">Contact Point</ref> for this <ref target="contact:Person">Person</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SWAP-PIM)"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="contact:Person"/>
+       </domain>
+       <range>
+               <resource name="contact:ContactLocation"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/contact¦fax b/data/object_properties/contact¦fax
new file mode 100644 (file)
index 0000000..459500b
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has fax</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="contact:Fax">Fax</ref> for this <ref target="contact:ContactLocation">Contact Point</ref>.
+               </p>
+               <p>
+                       Note that while Fax is a subclass of <ref target="contact:Phone">Phone</ref>, this property is <em>not</em> a subclass of <ptr target="contact:phone"/>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SWAP-PIM)"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="contact:ContactLocation"/>
+       </domain>
+       <range>
+               <resource name="contact:Fax"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/contact¦home b/data/object_properties/contact¦home
new file mode 100644 (file)
index 0000000..955604a
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has home contact</label>
+       <comment xml:lang="en">
+               <p>
+                       A home <ref target="contact:ContactLocation">Contact Point</ref> for this <ref target="contact:Person">Person</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SWAP-PIM)"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="contact:Person"/>
+       </domain>
+       <range>
+               <resource name="contact:ContactLocation"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/contact¦homePage b/data/object_properties/contact¦homePage
new file mode 100644 (file)
index 0000000..3af7c23
--- /dev/null
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty inverseFunctional="yes">
+       <label xml:lang="en">has home page</label>
+       <comment xml:lang="en">
+               <p>
+                       A home page for this thing.
+               </p>
+               <p>
+                       The meaning of “home page” is not clear and may not match the vernacular; “home pages” were originally literally the pages that one set to load when the “home” button was pressed in the browser.
+                       If the “home page” is publicly accessible, use <ptr target="contact:publicHomePage"/>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SWAP-PIM)"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="contact:webPage"/>
+       </subPropertyOf>
+</ObjectProperty>
diff --git a/data/object_properties/contact¦mailbox b/data/object_properties/contact¦mailbox
new file mode 100644 (file)
index 0000000..af721bb
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty inverseFunctional="yes">
+       <label xml:lang="en">has mailbox</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="contact:Mailbox">Mailbox</ref> for this <ref target="contact:SocialEntity">Social Entity</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SWAP-PIM)"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="contact:SocialEntity"/>
+       </domain>
+       <range>
+               <resource name="contact:Mailbox"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/contact¦mobile b/data/object_properties/contact¦mobile
new file mode 100644 (file)
index 0000000..d993f95
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has mobile contact</label>
+       <comment xml:lang="en">
+               <p>
+                       A mobile <ref target="contact:ContactLocation">Contact Point</ref> for this <ref target="contact:Person">Person</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SWAP-PIM)"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="contact:Person"/>
+       </domain>
+       <range>
+               <resource name="contact:ContactLocation"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/contact¦office b/data/object_properties/contact¦office
new file mode 100644 (file)
index 0000000..bdd8363
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has work contact</label>
+       <comment xml:lang="en">
+               <p>
+                       A work <ref target="contact:ContactLocation">Contact Point</ref> for this <ref target="contact:Person">Person</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SWAP-PIM)"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="contact:Person"/>
+       </domain>
+       <range>
+               <resource name="contact:ContactLocation"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/contact¦organization b/data/object_properties/contact¦organization
new file mode 100644 (file)
index 0000000..b07c504
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has organization</label>
+       <comment xml:lang="en">
+               <p>
+                       An <ref target="foaf:Organization">Organization</ref> which this <ref target="contact:Person">Person</ref> is a part of.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SWAP-PIM)"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="contact:Person"/>
+       </domain>
+       <range>
+               <resource name="foaf:Organization"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/contact¦participant b/data/object_properties/contact¦participant
new file mode 100644 (file)
index 0000000..6afb413
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has participant</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="contact:Person">Person</ref> who is a participant in this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SWAP-PIM)"/>
+       </isDefinedBy>
+       <range>
+               <resource name="contact:Person"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/contact¦partner b/data/object_properties/contact¦partner
new file mode 100644 (file)
index 0000000..cf36a27
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has partner</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="contact:Person">Person</ref> who is a partner to this Person.
+               </p>
+               <p>
+                       The kind of partnership is not specified.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SWAP-PIM)"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="contact:Person"/>
+       </domain>
+       <range>
+               <resource name="contact:Person"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/contact¦phone b/data/object_properties/contact¦phone
new file mode 100644 (file)
index 0000000..4d25de1
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has phone</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="contact:Phone">Phone</ref> for this <ref target="contact:ContactLocation">Contact Point</ref>.
+               </p>
+               <p>
+                       It is unclear whether this property implies an ability to actually receive phone calls.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SWAP-PIM)"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="contact:ContactLocation"/>
+       </domain>
+       <range>
+               <resource name="contact:Phone"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/contact¦publicHomePage b/data/object_properties/contact¦publicHomePage
new file mode 100644 (file)
index 0000000..4400892
--- /dev/null
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty inverseFunctional="yes">
+       <label xml:lang="en">has public home page</label>
+       <comment xml:lang="en">
+               <p>
+                       A public home·page for this thing.
+               </p>
+               <p>
+                       The meaning of “home page” is not clear and may not match the vernacular; “home pages” were originally literally the pages that one set to load when the “home” button was pressed in the browser.
+                       For the vernacular sense of “a landing page which contains information about a thing”, use <ptr target="(FOAF)"/>s <ptr target="foaf:homepage"/> instead.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SWAP-PIM)"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="contact:homePage"/>
+       </subPropertyOf>
+</ObjectProperty>
diff --git a/data/object_properties/contact¦vacationHome b/data/object_properties/contact¦vacationHome
new file mode 100644 (file)
index 0000000..17b43b0
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has vacation home contact</label>
+       <comment xml:lang="en">
+               <p>
+                       A vacation home <ref target="contact:ContactLocation">Contact Point</ref> for this <ref target="contact:Person">Person</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SWAP-PIM)"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="contact:Person"/>
+       </domain>
+       <range>
+               <resource name="contact:ContactLocation"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/contact¦webPage b/data/object_properties/contact¦webPage
new file mode 100644 (file)
index 0000000..5a926b7
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has web page</label>
+       <comment xml:lang="en">
+               <p>
+                       A related webpage for this thing.
+               </p>
+               <p>
+                       Unlike with <ptr target="foaf:page"/>, the manner of relation is not specified.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SWAP-PIM)"/>
+       </isDefinedBy>
+</ObjectProperty>
diff --git a/data/object_properties/dc11¦date b/data/object_properties/dc11¦date
new file mode 100644 (file)
index 0000000..e370913
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has date</label>
+       <comment xml:lang="en">
+               <p>
+                       Something which represents a point or period of time associated with an event in the lifecycle of this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/elements/1.1/date"/>
+       </isDefinedBy>
+</ObjectProperty>
diff --git a/data/object_properties/dc11¦identifier b/data/object_properties/dc11¦identifier
new file mode 100644 (file)
index 0000000..71b4950
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has identifier</label>
+       <comment xml:lang="en">
+               <p>
+                       Something which unambiguously references this thing within a given context.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/elements/1.1/identifier"/>
+       </isDefinedBy>
+</ObjectProperty>
diff --git a/data/object_properties/dc11¦title b/data/object_properties/dc11¦title
new file mode 100644 (file)
index 0000000..af7518b
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has title</label>
+       <comment xml:lang="en">
+               <p>
+                       Something which names this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/elements/1.1/title"/>
+       </isDefinedBy>
+</ObjectProperty>
diff --git a/data/object_properties/dcterms¦abstract b/data/object_properties/dcterms¦abstract
new file mode 100644 (file)
index 0000000..44080ec
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has abstract</label>
+       <comment xml:lang="en">
+               <p>
+                       Something which summarizes this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/abstract"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="dcterms:description"/>
+       </subPropertyOf>
+</ObjectProperty>
diff --git a/data/object_properties/dcterms¦accessRights b/data/object_properties/dcterms¦accessRights
new file mode 100644 (file)
index 0000000..1f6a97d
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has access rights</label>
+       <comment xml:lang="en">
+               <p>
+                       Something which conveys information about who can access this thing or an indication of its security status.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/accessRights"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="dcterms:rights"/>
+       </subPropertyOf>
+       <range>
+               <resource name="dcterms:RightsStatement"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/dcterms¦accrualMethod b/data/object_properties/dcterms¦accrualMethod
new file mode 100644 (file)
index 0000000..bcf1fa2
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has accrual method</label>
+       <comment xml:lang="en">
+               <p>
+                       Something which conveys method by which items are added to this <ref target="dcmitype:Collection">Collection</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/accrualMethod"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="dcmitype:Collection"/>
+       </domain>
+       <range>
+               <resource name="dcterms:MethodOfAccrual"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/dcterms¦accrualPeriodicity b/data/object_properties/dcterms¦accrualPeriodicity
new file mode 100644 (file)
index 0000000..ad06b91
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has accrual periodicity</label>
+       <comment xml:lang="en">
+               <p>
+                       Something which conveys the method by which items are added to this <ref target="dcmitype:Collection">Collection</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/accrualPeriodicity"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="dcmitype:Collection"/>
+       </domain>
+       <range>
+               <resource name="dcterms:Frequency"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/dcterms¦accrualPolicy b/data/object_properties/dcterms¦accrualPolicy
new file mode 100644 (file)
index 0000000..8175cb7
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has accrual policy</label>
+       <comment xml:lang="en">
+               <p>
+                       Something which conveys the policy governing the addition of items to this <ref target="dcmitype:Collection">Collection</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/accrualPolicy"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="dcmitype:Collection"/>
+       </domain>
+       <range>
+               <resource name="dcterms:Policy"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/dcterms¦conformsTo b/data/object_properties/dcterms¦conformsTo
new file mode 100644 (file)
index 0000000..96e4a30
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">conforms to</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="dcterms:Standard">Standard</ref> to which this thing conforms.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/conformsTo"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="dcterms:relation"/>
+       </subPropertyOf>
+       <range>
+               <resource name="dcterms:Standard"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/dcterms¦contributor b/data/object_properties/dcterms¦contributor
new file mode 100644 (file)
index 0000000..969f0df
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has contributor</label>
+       <comment xml:lang="en">
+               <p>
+                       An <ref target="dcterms:Agent">Agent</ref> responsible for making contributions to this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/contributor"/>
+       </isDefinedBy>
+       <range>
+               <resource name="dcterms:Agent"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/dcterms¦coverage b/data/object_properties/dcterms¦coverage
new file mode 100644 (file)
index 0000000..6ba10e7
--- /dev/null
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has coverage</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="dcterms:Location">Location</ref>, <ref target="dcterms:PeriodOfTime">PeriodOfTime</ref>, or <ref target="dcterms:Jurisdiction">Jurisdiction</ref> of this thing, which this thing is applicable to, or under which this thing is relevant.
+               </p>
+               <p>
+                       <ptr target="(DCMI)"/> states that because coverage is so broadly defined, it is preferable to use the more specific subproperties <ptr target="dcterms:temporal"/> and <ptr target="dcterms:spatial"/>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/coverage"/>
+       </isDefinedBy>
+       <range>
+               <Class>
+                       <unionOf>
+                               <resource name="dcterms:Location"/>
+                               <resource name="dcterms:PeriodOfTime"/>
+                               <resource name="dcterms:Jurisdiction"/>
+                       </unionOf>
+               </Class>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/dcterms¦creator b/data/object_properties/dcterms¦creator
new file mode 100644 (file)
index 0000000..d33a67b
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has creator</label>
+       <comment xml:lang="en">
+               <p>
+                       An <ref target="dcterms:Agent">Agent</ref> responsible for making this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/creator"/>
+       </isDefinedBy>
+       <equivalentProperty>
+               <resource name="foaf:maker"/>
+       </equivalentProperty>
+       <subPropertyOf>
+               <resource name="dcterms:contributor"/>
+       </subPropertyOf>
+       <range>
+               <resource name="dcterms:Agent"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/dcterms¦description b/data/object_properties/dcterms¦description
new file mode 100644 (file)
index 0000000..7469635
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has description</label>
+       <comment xml:lang="en">
+               <p>
+                       Something which provides an account of this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/description"/>
+       </isDefinedBy>
+</ObjectProperty>
diff --git a/data/object_properties/dcterms¦extent b/data/object_properties/dcterms¦extent
new file mode 100644 (file)
index 0000000..459f079
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has extent</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="dcterms:SizeOrDuration">Size Or Duration</ref> of this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/extent"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="dcterms:format"/>
+       </subPropertyOf>
+       <range>
+               <resource name="dcterms:SizeOrDuration"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/dcterms¦format b/data/object_properties/dcterms¦format
new file mode 100644 (file)
index 0000000..805e9a7
--- /dev/null
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">in format</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="dcterms:FileFormat">File Format</ref>, <ref target="dcterms:PhysicalMedioum">Physical Medium</ref>, or <ref target="dcterms:SizeOrDuration">Size Or Duration</ref> of this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/format"/>
+       </isDefinedBy>
+       <range>
+               <Class>
+                       <unionOf>
+                               <resource name="dcterms:MediaType"/>
+                               <resource name="dcterms:SizeOrDuration"/>
+                       </unionOf>
+               </Class>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/dcterms¦hasFormat b/data/object_properties/dcterms¦hasFormat
new file mode 100644 (file)
index 0000000..3a3e5a9
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has format</label>
+       <comment xml:lang="en">
+               <p>
+                       A related something which is substantially the same as this thing, but in another format.
+               </p>
+               <p>
+                       Of the two, this property is intended to be used on the thing which existed first, and <ptr target="dcterms:isFormatOf"/> is intended to be used on the thing which was created later.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/hasFormat"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="dcterms:relation"/>
+       </subPropertyOf>
+       <inverseOf>
+               <resource name="dcterms:isFormatOf"/>
+       </inverseOf>
+</ObjectProperty>
diff --git a/data/object_properties/dcterms¦hasPart b/data/object_properties/dcterms¦hasPart
new file mode 100644 (file)
index 0000000..7990388
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has part</label>
+       <comment xml:lang="en">
+               <p>
+                       A related something which is included either physically or logically in this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/hasPart"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="dcterms:relation"/>
+       </subPropertyOf>
+       <inverseOf>
+               <resource name="dcterms:isPartOf"/>
+       </inverseOf>
+</ObjectProperty>
diff --git a/data/object_properties/dcterms¦hasVersion b/data/object_properties/dcterms¦hasVersion
new file mode 100644 (file)
index 0000000..1218cd2
--- /dev/null
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has version</label>
+       <comment xml:lang="en">
+               <p>
+                       A related something which is a version, edition, or adaptation of this thing.
+               </p>
+               <p>
+                       <ptr target="(DCMI)"/> states:
+                       « Changes in version imply substantive changes in content rather than differences in format. »
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/hasVersion"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="dcterms:relation"/>
+       </subPropertyOf>
+       <inverseOf>
+               <resource name="dcterms:isVersionOf"/>
+       </inverseOf>
+</ObjectProperty>
diff --git a/data/object_properties/dcterms¦instructionalMethod b/data/object_properties/dcterms¦instructionalMethod
new file mode 100644 (file)
index 0000000..91358c8
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">supports instructional method</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="dcterms:MethodOfInstruction">Method Of Instruction</ref>, which this thing is designed to support.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/instructionalMethod"/>
+       </isDefinedBy>
+       <range>
+               <resource name="dcterms:MethodOfInstruction"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/dcterms¦isFormatOf b/data/object_properties/dcterms¦isFormatOf
new file mode 100644 (file)
index 0000000..f95957a
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">format of</label>
+       <comment xml:lang="en">
+               <p>
+                       A related something which is substantially the same as this thing, but in another format.
+               </p>
+               <p>
+                       Of the two, <ptr target="dcterms:hasFormat"/> is intended to be used on the thing which existed first, and this property is intended to be used on the thing which was created later.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/isFormatOf"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="dcterms:relation"/>
+       </subPropertyOf>
+       <inverseOf>
+               <resource name="dcterms:hasFormat"/>
+       </inverseOf>
+</ObjectProperty>
diff --git a/data/object_properties/dcterms¦isPartOf b/data/object_properties/dcterms¦isPartOf
new file mode 100644 (file)
index 0000000..7ee0c37
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">part of</label>
+       <comment xml:lang="en">
+               <p>
+                       A related something in which this thing is included either physically or logically.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/isPartOf"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="dcterms:relation"/>
+       </subPropertyOf>
+       <inverseOf>
+               <resource name="dcterms:hasPart"/>
+       </inverseOf>
+</ObjectProperty>
diff --git a/data/object_properties/dcterms¦isReferencedBy b/data/object_properties/dcterms¦isReferencedBy
new file mode 100644 (file)
index 0000000..0799b7c
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">referenced by</label>
+       <comment xml:lang="en">
+               <p>
+                       A related something which references, cites, or otherwise points to this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/isReferencedBy"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="dcterms:relation"/>
+       </subPropertyOf>
+       <inverseOf>
+               <resource name="dcterms:references"/>
+       </inverseOf>
+</ObjectProperty>
diff --git a/data/object_properties/dcterms¦isReplacedBy b/data/object_properties/dcterms¦isReplacedBy
new file mode 100644 (file)
index 0000000..a97d997
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">replaced by</label>
+       <comment xml:lang="en">
+               <p>
+                       A related something which supplants, displaces, or supersedes this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/isReplacedBy"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="dcterms:relation"/>
+       </subPropertyOf>
+       <inverseOf>
+               <resource name="dcterms:replaces"/>
+       </inverseOf>
+</ObjectProperty>
diff --git a/data/object_properties/dcterms¦isRequiredBy b/data/object_properties/dcterms¦isRequiredBy
new file mode 100644 (file)
index 0000000..3a9bd3b
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">required by</label>
+       <comment xml:lang="en">
+               <p>
+                       A related something which requires this thing to support its function, delivery, or coherence.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/isRequiredBy"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="dcterms:relation"/>
+       </subPropertyOf>
+       <inverseOf>
+               <resource name="dcterms:requires"/>
+       </inverseOf>
+</ObjectProperty>
diff --git a/data/object_properties/dcterms¦isVersionOf b/data/object_properties/dcterms¦isVersionOf
new file mode 100644 (file)
index 0000000..ec762a1
--- /dev/null
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">version of</label>
+       <comment xml:lang="en">
+               <p>
+                       A related something of which this thing is a version, edition, or adaptation.
+               </p>
+               <p>
+                       <ptr target="(DCMI)"/> states:
+                       « Changes in version imply substantive changes in content rather than differences in format. »
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/isVersionOf"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="dcterms:relation"/>
+       </subPropertyOf>
+       <inverseOf>
+               <resource name="dcterms:hasVersion"/>
+       </inverseOf>
+</ObjectProperty>
diff --git a/data/object_properties/dcterms¦language b/data/object_properties/dcterms¦language
new file mode 100644 (file)
index 0000000..caad858
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has language</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="dcterms:LinguisticSystem">Linguistic System</ref> of this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/language"/>
+       </isDefinedBy>
+       <range>
+               <resource name="dcterms:LinguisticSystem"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/dcterms¦license b/data/object_properties/dcterms¦license
new file mode 100644 (file)
index 0000000..7476b19
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has license</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="dcterms:LicenseDocument">License Document</ref> giving official permission to do something with this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/license"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="dcterms:rights"/>
+       </subPropertyOf>
+       <range>
+               <resource name="dcterms:LicenseDocument"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/dcterms¦medium b/data/object_properties/dcterms¦medium
new file mode 100644 (file)
index 0000000..28b74db
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">in medium</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="dcterms:PhysicalMedium">Physical Medium</ref> of this <ref target="dcterms:PhysicalResource">Physical Resource</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/medium"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="dcterms:format"/>
+       </subPropertyOf>
+       <range>
+               <resource name="dcterms:PhysicalMedium"/>
+       </range>
+       <range>
+               <resource name="dcterms:PhysicalResource"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/dcterms¦provenance b/data/object_properties/dcterms¦provenance
new file mode 100644 (file)
index 0000000..0baf41d
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has provenance</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="dcterms:ProvenanceStatement">Provenance Statement</ref> of any changes in ownership and custody of this thing since its creation that are significant for its authenticity, integrity, and interpretation.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/provenance"/>
+       </isDefinedBy>
+       <range>
+               <resource name="dcterms:ProvenanceStatement"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/dcterms¦publisher b/data/object_properties/dcterms¦publisher
new file mode 100644 (file)
index 0000000..b0140cd
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has publisher</label>
+       <comment xml:lang="en">
+               <p>
+                       An <ref target="dcterms:Agent">Agent</ref> responsible for making this thing available.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/publisher"/>
+       </isDefinedBy>
+       <range>
+               <resource name="dcterms:Agent"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/dcterms¦references b/data/object_properties/dcterms¦references
new file mode 100644 (file)
index 0000000..b079d15
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">references</label>
+       <comment xml:lang="en">
+               <p>
+                       A related something which is referenced, cited, or otherwise pointed to by this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/references"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="dcterms:relation"/>
+       </subPropertyOf>
+       <inverseOf>
+               <resource name="dcterms:isReferencedBy"/>
+       </inverseOf>
+</ObjectProperty>
diff --git a/data/object_properties/dcterms¦relation b/data/object_properties/dcterms¦relation
new file mode 100644 (file)
index 0000000..aec24ab
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has relation with</label>
+       <comment xml:lang="en">
+               <p>
+                       Something related to this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/relation"/>
+       </isDefinedBy>
+</ObjectProperty>
diff --git a/data/object_properties/dcterms¦replaces b/data/object_properties/dcterms¦replaces
new file mode 100644 (file)
index 0000000..0c67d81
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">replaces</label>
+       <comment xml:lang="en">
+               <p>
+                       A related something which this thing supplants, displaces, or supersedes.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/replaces"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="dcterms:relation"/>
+       </subPropertyOf>
+       <inverseOf>
+               <resource name="dcterms:isReplacedBy"/>
+       </inverseOf>
+</ObjectProperty>
diff --git a/data/object_properties/dcterms¦requires b/data/object_properties/dcterms¦requires
new file mode 100644 (file)
index 0000000..dc74bb2
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">requires</label>
+       <comment xml:lang="en">
+               <p>
+                       A related something which is required by this thing to support its function, delivery, or coherence.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/requires"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="dcterms:relation"/>
+       </subPropertyOf>
+       <inverseOf>
+               <resource name="dcterms:isRequiredBy"/>
+       </inverseOf>
+</ObjectProperty>
diff --git a/data/object_properties/dcterms¦rights b/data/object_properties/dcterms¦rights
new file mode 100644 (file)
index 0000000..3e24b82
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has rights statement</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="dcterms:RightsStatement">Rights Statement</ref> providing information about rights held in and over this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/rights"/>
+       </isDefinedBy>
+       <range>
+               <resource name="dcterms:RightsStatement"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/dcterms¦rightsHolder b/data/object_properties/dcterms¦rightsHolder
new file mode 100644 (file)
index 0000000..8de62cb
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has rights holder</label>
+       <comment xml:lang="en">
+               <p>
+                       An <ref target="dcterms:Agent">Agent</ref> owning or managing rights over this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/rightsHolder"/>
+       </isDefinedBy>
+       <range>
+               <resource name="dcterms:Agent"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/dcterms¦source b/data/object_properties/dcterms¦source
new file mode 100644 (file)
index 0000000..47727a4
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has source</label>
+       <comment xml:lang="en">
+               <p>
+                       A related something from which this thing is derived.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/source"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="dcterms:relation"/>
+       </subPropertyOf>
+</ObjectProperty>
diff --git a/data/object_properties/dcterms¦spatial b/data/object_properties/dcterms¦spatial
new file mode 100644 (file)
index 0000000..f44d691
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has spatial coverage</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="dcterms:Location">Location</ref> providing spatial characteristics of this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/spatial"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="dcterms:coverage"/>
+       </subPropertyOf>
+       <range>
+               <resource name="dcterms:Location"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/dcterms¦subject b/data/object_properties/dcterms¦subject
new file mode 100644 (file)
index 0000000..000c28e
--- /dev/null
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has subject</label>
+       <comment xml:lang="en">
+               <p>
+                       Something which is a topic of this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/subject"/>
+       </isDefinedBy>
+</ObjectProperty>
diff --git a/data/object_properties/dcterms¦tableOfContents b/data/object_properties/dcterms¦tableOfContents
new file mode 100644 (file)
index 0000000..2527799
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has table of contents</label>
+       <comment xml:lang="en">
+               <p>
+                       Something which lists the subunits of this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/tableOfContents"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="dcterms:description"/>
+       </subPropertyOf>
+</ObjectProperty>
diff --git a/data/object_properties/dcterms¦temporal b/data/object_properties/dcterms¦temporal
new file mode 100644 (file)
index 0000000..3ce5bdd
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has temporal coverage</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="dcterms:PeriodOfTime">Period Of Time</ref> providing temporal characteristics of this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/temporal"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="dcterms:coverage"/>
+       </subPropertyOf>
+       <range>
+               <resource name="dcterms:PeriodOfTime"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/dcterms¦type b/data/object_properties/dcterms¦type
new file mode 100644 (file)
index 0000000..9ccb0e5
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has type</label>
+       <comment xml:lang="en">
+               <p>
+                       Something which forms the nature or genre of this thing.
+               </p>
+               <p>
+                       <ptr target="(DCMI)"/> remarks that for describing the file format, physical medium, or dimensions of the resource, one should use the property <ptr target="dcterms:format"/>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(DCMI)" fragment="http://purl.org/dc/terms/type"/>
+       </isDefinedBy>
+</ObjectProperty>
diff --git a/data/object_properties/foaf¦account b/data/object_properties/foaf¦account
new file mode 100644 (file)
index 0000000..893b11d
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty inverseFunctional="yes">
+       <label xml:lang="en">has account</label>
+       <comment xml:lang="en">
+               <p>
+                       An <ref target="foaf:OnlineAccount">Online Account</ref> for which this <ref target="foaf:Agent">Agent</ref> is (currently) the sole account holder.
+               </p>
+               <p>
+                       <ptr target="(FOAF)"/> doesn¦t define this as an inverse functional property, but the description implies as much.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(FOAF)" fragment="term_account"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="foaf:Agent"/>
+       </domain>
+       <range>
+               <resource name="foaf:OnlineAccount"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/foaf¦accountServiceHomepage b/data/object_properties/foaf¦accountServiceHomepage
new file mode 100644 (file)
index 0000000..9cd0c14
--- /dev/null
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty functional="yes">
+       <label xml:lang="en">has account service home·page</label>
+       <comment xml:lang="en">
+               <p>
+                       The <ref target="foaf:Document">Document</ref> which is the “service home·page” for this <ref target="foaf:OnlineAccount">Online Account</ref>.
+               </p>
+               <p>
+                       <ptr target="(FOAF)"/> describes this as the home·page for the “supporting service provider”, but it¦s more accurate to say that this property indicates the landing page for the service itself.
+                       This ontology defines it as functional; an Online Account can have at most one of these.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(FOAF)" fragment="term_accountServiceHomepage"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="foaf:OnlineAccount"/>
+       </domain>
+       <range>
+               <resource name="foaf:Document"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/foaf¦based_near b/data/object_properties/foaf¦based_near
new file mode 100644 (file)
index 0000000..54741cb
--- /dev/null
@@ -0,0 +1,35 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">based near</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="geo:SpatialThing">Spatial Thing</ref> which this <ref target="foaf:Person">Person</ref> is “based near”.
+               </p>
+               <p>
+                       “Near” is intentionally vague, but intended to be generally human‐scale.
+                       “Based” is even more confusing, but the implication is that some significant amount of a Person¦s activities occur where they are “based”.
+               </p>
+               <p>
+                       <ptr target="(FOAF)"/> defines the domain of this property merely as Spatial Things; this ontology restricts it specifically to Persons.
+                       There isn¦t a good definition of “based” for things which aren¦t at least <ref target="foaf:Agent">Agents</ref>, and most non‐Person Agents are conceptual rather than physical (i·e, they aren¦t Spatial Things).
+                       So, expanding the domain beyond Persons would mostly just invite confusion.
+               </p>
+               <p>
+                       <ptr target="contact:nearestAirport"/> is suggested as a possible alternative.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(FOAF)" fragment="term_based_near"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="foaf:Person"/>
+       </domain>
+       <range>
+               <resource name="geo:SpatialThing"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/foaf¦currentProject b/data/object_properties/foaf¦currentProject
new file mode 100644 (file)
index 0000000..1c4c44e
--- /dev/null
@@ -0,0 +1,43 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has current project</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="foaf:Project">Project</ref> (or a <ref target="foaf:Document">Document</ref> whose <ref target="foaf:primaryTopic">primary topic</ref> is such a Project) which this <ref target="foaf:Person">Person</ref> is currently actively involved in.
+               </p>
+               <p>
+                       Historically, this property (somewhat confusingly) pointed not to Projects but to Documents which described them; <ptr target="(FOAF)"/> says there has been “some confusion” about this and does not take a firm stance.
+                       As Projects and Documents are disjoint classes, this ontology supports both usages, but encourages linking directly to Projects where possible.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(FOAF)" fragment="term_currentProject"/>
+       </isDefinedBy>
+       <propertyChainAxiom>
+               <resource name="foaf:currentProject"/>
+               <resource name="foaf:primaryTopic"/>
+       </propertyChainAxiom>
+       <domain>
+               <resource name="foaf:Person"/>
+       </domain>
+       <range>
+               <Class>
+                       <unionOf>
+                               <Restriction>
+                                       <onProperty>
+                                               <resource name="foaf:primaryTopic"/>
+                                       </onProperty>
+                                       <allValuesFrom>
+                                               <resource name="foaf:Project"/>
+                                       </allValuesFrom>
+                               </Restriction>
+                               <resource name="foaf:Project"/>
+                       </unionOf>
+               </Class>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/foaf¦depiction b/data/object_properties/foaf¦depiction
new file mode 100644 (file)
index 0000000..9594398
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has depiction</label>
+       <comment xml:lang="en">
+               <p>
+                       An <ref target="foaf:Image">Image</ref> which <ref target="foaf:depicts">depicts</ref> this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(FOAF)" fragment="term_depiction"/>
+       </isDefinedBy>
+       <inverseOf>
+               <resource name="foaf:depicts"/>
+       </inverseOf>
+       <range>
+               <resource name="foaf:Image"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/foaf¦depicts b/data/object_properties/foaf¦depicts
new file mode 100644 (file)
index 0000000..ee2cc79
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">depicts</label>
+       <comment xml:lang="en">
+               <p>
+                       A thing which this <ref target="foaf:Image">Image</ref> depicts.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(FOAF)" fragment="term_depicts"/>
+       </isDefinedBy>
+       <inverseOf>
+               <resource name="foaf:depiction"/>
+       </inverseOf>
+       <domain>
+               <resource name="foaf:Image"/>
+       </domain>
+</ObjectProperty>
diff --git a/data/object_properties/foaf¦focus b/data/object_properties/foaf¦focus
new file mode 100644 (file)
index 0000000..0bbf548
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has focus</label>
+       <comment xml:lang="en">
+               <p>
+                       A underlying or focal thing associated with this <ref target="skos:Concept">Concept</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(FOAF)" fragment="term_focus"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="skos:Concept"/>
+       </domain>
+</ObjectProperty>
diff --git a/data/object_properties/foaf¦homepage b/data/object_properties/foaf¦homepage
new file mode 100644 (file)
index 0000000..cb45fd7
--- /dev/null
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty inverseFunctional="yes">
+       <label xml:lang="en">has home·page</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="foaf:Document">Document</ref>, available on the public Web, whose <ref target="foaf:primaryTopic">primary topic</ref> is this thing.
+               </p>
+               <p>
+                       Not <em>all</em> Documents which satisfy the above criteria are necessarily valid home·pages; the term “home·page” typically implies some form of ownership or control by the entity being described (or the entities which own or control it).
+                       The more general property <ptr target="foaf:isPrimaryTopicOf"/> can be used to describe other cases.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(FOAF)" fragment="term_homepage"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="foaf:isPrimaryTopicOf"/>
+       </subPropertyOf>
+       <subPropertyOf>
+               <resource name="contact:webPage"/>
+       </subPropertyOf>
+       <range>
+               <resource name="foaf:Document"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/foaf¦img b/data/object_properties/foaf¦img
new file mode 100644 (file)
index 0000000..0b00669
--- /dev/null
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has image</label>
+       <comment xml:lang="en">
+               <p>
+                       An <ref target="foaf:Image">Image</ref> which not only <ref target="foaf:depicts">depicts</ref>, but also is particularly representative of, this <ref target="foaf:Person">Person</ref>.
+               </p>
+               <p>
+                       <ptr target="(FOAF)"/> remarks that it might have been more helpful to call this property ‘mugshot’ or similar.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(FOAF)" fragment="term_img"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="foaf:depiction"/>
+       </subPropertyOf>
+       <domain>
+               <resource name="foaf:Person"/>
+       </domain>
+       <range>
+               <resource name="foaf:Image"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/foaf¦isPrimaryTopicOf b/data/object_properties/foaf¦isPrimaryTopicOf
new file mode 100644 (file)
index 0000000..96b3134
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty inverseFunctional="yes">
+       <label xml:lang="en">primary topic of</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="foaf:Document">Document</ref> whose <ref target="foaf:primaryTopic">primary topic</ref> is this thing.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(FOAF)" fragment="term_isPrimaryTopicOf"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="foaf:page"/>
+       </subPropertyOf>
+       <inverseOf>
+               <resource name="foaf:primaryTopic"/>
+       </inverseOf>
+       <range>
+               <resource name="foaf:Document"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/foaf¦knows b/data/object_properties/foaf¦knows
new file mode 100644 (file)
index 0000000..d93b19b
--- /dev/null
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">knows</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="foaf:Person">Person</ref> who this Person knows.
+               </p>
+               <p>
+                       “Knowing” is defined as “some form of reciprocated interaction”, not e·g parasocial familiarity from following some·one¦s web feed.
+                       But it does not imply friendship or set further constraints on the forms that interaction might have taken.
+                       (This is partially because implementation experience has shown formal encoding of concepts like “friendship” to be awkward, especially when both parties are not on the same page regarding it.)
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(FOAF)" fragment="term_knows"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="foaf:Person"/>
+       </domain>
+       <range>
+               <resource name="foaf:Person"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/foaf¦logo b/data/object_properties/foaf¦logo
new file mode 100644 (file)
index 0000000..56a75cb
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty inverseFunctional="yes">
+       <label xml:lang="en">has logo</label>
+       <comment xml:lang="en">
+               <p>
+                       An <ref target="foaf:Image">Image</ref> which provides a graphical logo of some kind for this thing.
+               </p>
+               <p>
+                       <ptr target="(FOAF)"/> calls this property “underspecified”.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(FOAF)" fragment="term_logo"/>
+       </isDefinedBy>
+       <range>
+               <resource name="foaf:Image"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/foaf¦made b/data/object_properties/foaf¦made
new file mode 100644 (file)
index 0000000..b6949bc
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">made</label>
+       <comment xml:lang="en">
+               <p>
+                       A thing which this <ref target="foaf:Agent">Agent</ref> made.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(FOAF)" fragment="term_made"/>
+       </isDefinedBy>
+       <inverseOf>
+               <resource name="foaf:maker"/>
+       </inverseOf>
+       <domain>
+               <resource name="foaf:Agent"/>
+       </domain>
+</ObjectProperty>
diff --git a/data/object_properties/foaf¦maker b/data/object_properties/foaf¦maker
new file mode 100644 (file)
index 0000000..022638a
--- /dev/null
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has maker</label>
+       <comment xml:lang="en">
+               <p>
+                       An <ref target="foaf:Agent">Agent</ref> which made this thing.
+               </p>
+               <p>
+                       <ptr target="(DCMI)"/> considers “making” to be equivalent to “creating”; this property is equivalent to <ptr target="dcterms:creator"/>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(FOAF)" fragment="term_maker"/>
+       </isDefinedBy>
+       <equivalentProperty>
+               <resource name="dcterms:creator"/>
+       </equivalentProperty>
+       <inverseOf>
+               <resource name="foaf:made"/>
+       </inverseOf>
+       <range>
+               <resource name="foaf:Agent"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/foaf¦member b/data/object_properties/foaf¦member
new file mode 100644 (file)
index 0000000..88f761e
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has member</label>
+       <comment xml:lang="en">
+               <p>
+                       An <ref target="foaf:Agent">Agent</ref> which belongs to this <ref target="foaf:Group">Group</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(FOAF)" fragment="term_member"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="foaf:Group"/>
+       </domain>
+       <range>
+               <resource name="foaf:Agent"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/foaf¦page b/data/object_properties/foaf¦page
new file mode 100644 (file)
index 0000000..00503dc
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has page</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="foaf:Document">Document</ref> for which this thing is a <ref target="foaf:topic">topic</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(FOAF)" fragment="term_page"/>
+       </isDefinedBy>
+       <inverseOf>
+               <resource name="foaf:topic"/>
+       </inverseOf>
+       <range>
+               <resource name="foaf:Document"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/foaf¦pastProject b/data/object_properties/foaf¦pastProject
new file mode 100644 (file)
index 0000000..624df63
--- /dev/null
@@ -0,0 +1,43 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has past project</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="foaf:Project">Project</ref> (or a <ref target="foaf:Document">Document</ref> whose <ref target="foaf:primaryTopic">primary topic</ref> is such a Project) which this <ref target="foaf:Person">Person</ref> was formerly, but is no longer currently, actively involved in.
+               </p>
+               <p>
+                       Historically, this property (somewhat confusingly) pointed not to Projects but to Documents which described them; <ptr target="(FOAF)"/> says there has been “some confusion” about this and does not take a firm stance.
+                       As Projects and Documents are disjoint classes, this ontology supports both usages, but encourages linking directly to Projects where possible.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(FOAF)" fragment="term_pastProject"/>
+       </isDefinedBy>
+       <propertyChainAxiom>
+               <resource name="foaf:pastProject"/>
+               <resource name="foaf:primaryTopic"/>
+       </propertyChainAxiom>
+       <domain>
+               <resource name="foaf:Person"/>
+       </domain>
+       <range>
+               <Class>
+                       <unionOf>
+                               <Restriction>
+                                       <onProperty>
+                                               <resource name="foaf:primaryTopic"/>
+                                       </onProperty>
+                                       <allValuesFrom>
+                                               <resource name="foaf:Project"/>
+                                       </allValuesFrom>
+                               </Restriction>
+                               <resource name="foaf:Project"/>
+                       </unionOf>
+               </Class>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/foaf¦primaryTopic b/data/object_properties/foaf¦primaryTopic
new file mode 100644 (file)
index 0000000..82122fb
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty functional="yes">
+       <label xml:lang="en">has primary topic</label>
+       <comment xml:lang="en">
+               <p>
+                       The main thing this <ref target="foaf:Document">Document</ref> is about.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(FOAF)" fragment="term_primaryTopic"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="foaf:topic"/>
+       </subPropertyOf>
+       <inverseOf>
+               <resource name="foaf:isPrimaryTopicOf"/>
+       </inverseOf>
+       <domain>
+               <resource name="foaf:Document"/>
+       </domain>
+</ObjectProperty>
diff --git a/data/object_properties/foaf¦publications b/data/object_properties/foaf¦publications
new file mode 100644 (file)
index 0000000..2240491
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has publications</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="foaf:Document">Document</ref> listing publications which are associated with this <ref target="foaf:Person">Person</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(FOAF)" fragment="term_publications"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="foaf:Person"/>
+       </domain>
+       <range>
+               <resource name="foaf:Document"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/foaf¦thumbnail b/data/object_properties/foaf¦thumbnail
new file mode 100644 (file)
index 0000000..35a7aa6
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has thumbnail</label>
+       <comment xml:lang="en">
+               <p>
+                       An <ref target="foaf:Image">Image</ref> which is a smaller, derived, representative thumbnail for this Image.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(FOAF)" fragment="term_thumbnail"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="foaf:Image"/>
+       </domain>
+       <range>
+               <resource name="foaf:Image"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/foaf¦tipjar b/data/object_properties/foaf¦tipjar
new file mode 100644 (file)
index 0000000..e7a41ef
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has tipjar</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="foaf:Document">Document</ref> describing some mechanisms for paying or otherwise rewarding this <ref target="foaf:Agent">Agent</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(FOAF)" fragment="term_tipjar"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="foaf:Agent"/>
+       </domain>
+       <range>
+               <resource name="foaf:Document"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/foaf¦topic b/data/object_properties/foaf¦topic
new file mode 100644 (file)
index 0000000..afd627b
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has topic</label>
+       <comment xml:lang="en">
+               <p>
+                       A thing that this <ref target="foaf:Document">Document</ref> is about.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(FOAF)" fragment="term_topic"/>
+       </isDefinedBy>
+       <inverseOf>
+               <resource name="foaf:page"/>
+       </inverseOf>
+       <domain>
+               <resource name="foaf:Document"/>
+       </domain>
+</ObjectProperty>
diff --git a/data/object_properties/foaf¦topic_interest b/data/object_properties/foaf¦topic_interest
new file mode 100644 (file)
index 0000000..5f36d7f
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has topical interest</label>
+       <comment xml:lang="en">
+               <p>
+                       A thing which this <ref target="foaf:Agent">Agent</ref> is interested in.
+               </p>
+               <p>
+                       This property has a some·what verbose name because it replaces the older <resource name="foaf:interest"/> property, which linked not to the interest itself but to a <ref target="foaf:Document">Document</ref> which described it.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(FOAF)" fragment="term_topic_interest"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="foaf:Agent"/>
+       </domain>
+</ObjectProperty>
diff --git a/data/object_properties/foaf¦weblog b/data/object_properties/foaf¦weblog
new file mode 100644 (file)
index 0000000..32ee15d
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has weblog</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="foaf:Document">Document</ref> which is a weblog for this <ref target="foaf:Agent">Agent</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(FOAF)" fragment="term_weblog"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="foaf:Agent"/>
+       </domain>
+       <range>
+               <resource name="foaf:Document"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/foaf¦workInfoHomepage b/data/object_properties/foaf¦workInfoHomepage
new file mode 100644 (file)
index 0000000..c476d84
--- /dev/null
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has work info homepage</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="foaf:Document">Document</ref> which describes a <ref target="foaf:Person">Person</ref>s work.
+               </p>
+               <p>
+                       This property exists to both identify and keep separate “homepages” of people whose purpose is actually just to describe their professional role with·in an organization or project.
+                       <ptr target="(FOAF)"/> says “these aren¦t really homepages”.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(FOAF)" fragment="term_workInfoHomepage"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="foaf:Person"/>
+       </domain>
+       <range>
+               <resource name="foaf:Document"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/is b/data/object_properties/is
new file mode 100644 (file)
index 0000000..9e2db65
--- /dev/null
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty functional="yes" reflexive="yes" status="plumbing">
+       <label xml:lang="en">is</label>
+       <comment xml:lang="en">
+               <p>
+                       This thing.
+               </p>
+               <p>
+                       Every object is itself.
+                       This property is primarily useful as a superproperty for derived properties which reify class membership thru object property relationships.
+               </p>
+       </comment>
+</ObjectProperty>
diff --git a/data/object_properties/rdfs¦member b/data/object_properties/rdfs¦member
new file mode 100644 (file)
index 0000000..c1c5231
--- /dev/null
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has member</label>
+       <comment xml:lang="en">
+               <p>
+                       A thing which is contained by this thing.
+               </p>
+               <p>
+                       The container membership properties (properties of the form <resource name="rdf:_1"/>, <resource name="rdf:_2"/>, ⁊·c) are all implicitly subproperties of this property, altho there is no formal requirement on applications to support this.
+                       These properties are intended for use with <ref target="rdfs:Container">Containers</ref>, but may also be applied to other things.
+               </p>
+               <p>
+                       In <ptr target="(RDF11-SCHEMA)"/>, this property is permitted to take literal values; it is neither formally an object property nor a data property.
+                       For compatibility with Owl, and to match the most useful cases, this ontology defines it as an object property and disallows its use with literals.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(RDF11-SCHEMA)" fragment="ch_member"/>
+       </isDefinedBy>
+</ObjectProperty>
diff --git a/data/object_properties/rel¦alternate b/data/object_properties/rel¦alternate
new file mode 100644 (file)
index 0000000..8ceec84
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has alternate</label>
+       <comment xml:lang="en">
+               <p>
+                       An alternate version of this thing.
+               </p>
+               <p>
+                       Alternate versions include those in different languages or having different media types.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(RFC4287)"/>
+       </isDefinedBy>
+</ObjectProperty>
diff --git a/data/object_properties/skosxl¦altLabel b/data/object_properties/skosxl¦altLabel
new file mode 100644 (file)
index 0000000..7b8eaa7
--- /dev/null
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has alternative label</label>
+       <comment xml:lang="en">
+               <p>
+                       An alternative <ref target="skos:Label">Label</ref> for this thing.
+               </p>
+               <p>
+                       <ptr target="(SKOS)"/> places a number of integrity conditions on <ptr target="skos:altLabel"/> which are inherited by this property, but are not formally expressible in Owl.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SKOS)" fragment="xl-altLabel"/>
+       </isDefinedBy>
+       <propertyDisjointWith>
+               <resource name="skosxl:prefLabel"/>
+       </propertyDisjointWith>
+       <propertyDisjointWith>
+               <resource name="skosxl:hiddenLabel"/>
+       </propertyDisjointWith>
+       <range>
+               <resource name="skosxl:Label"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/skosxl¦hiddenLabel b/data/object_properties/skosxl¦hiddenLabel
new file mode 100644 (file)
index 0000000..0abfbb1
--- /dev/null
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has hidden label</label>
+       <comment xml:lang="en">
+               <p>
+                       A hidden <ref target="skos:Label">Label</ref> for this thing.
+               </p>
+               <p>
+                       <ptr target="(SKOS)"/> places a number of integrity conditions on <ptr target="skos:hiddenLabel"/> which are inherited by this property, but are not formally expressible in Owl.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SKOS)" fragment="xl-hiddenLabel"/>
+       </isDefinedBy>
+       <propertyDisjointWith>
+               <resource name="skosxl:prefLabel"/>
+       </propertyDisjointWith>
+       <propertyDisjointWith>
+               <resource name="skosxl:altLabel"/>
+       </propertyDisjointWith>
+       <range>
+               <resource name="skosxl:Label"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/skosxl¦labelRelation b/data/object_properties/skosxl¦labelRelation
new file mode 100644 (file)
index 0000000..82697d1
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty symmetric="yes">
+       <label xml:lang="en">has label relation with</label>
+       <comment xml:lang="en">
+               <p>
+                       A<ref target="skos:Label">Label</ref> which this Label is related to in some fashion.
+               </p>
+               <p>
+                       This property is not intended to be used directly, but rather to serve as a launching point for further refinements.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SKOS)" fragment="xl-labelRelation"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="skosxl:Label"/>
+       </domain>
+       <range>
+               <resource name="skosxl:Label"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/skosxl¦prefLabel b/data/object_properties/skosxl¦prefLabel
new file mode 100644 (file)
index 0000000..4c495a3
--- /dev/null
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has preferred label</label>
+       <comment xml:lang="en">
+               <p>
+                       A preferred <ref target="skos:Label">Label</ref> for this thing.
+               </p>
+               <p>
+                       <ptr target="(SKOS)"/> places a number of integrity conditions on <ptr target="skos:prefLabel"/> which are inherited by this property, but are not formally expressible in Owl.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SKOS)" fragment="xl-prefLabel"/>
+       </isDefinedBy>
+       <propertyDisjointWith>
+               <resource name="skosxl:altLabel"/>
+       </propertyDisjointWith>
+       <propertyDisjointWith>
+               <resource name="skosxl:hiddenLabel"/>
+       </propertyDisjointWith>
+       <range>
+               <resource name="skosxl:Label"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/skos¦broadMatch b/data/object_properties/skos¦broadMatch
new file mode 100644 (file)
index 0000000..9cd4f34
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has broad match</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="skos:Concept">Concept</ref> which is a broad match for this Concept.
+               </p>
+               <p>
+                       This property is a specialization of <ptr target="skos:broader"/> for use as a <ref target="skos:mappingRelation">mapping relation</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SKOS)" fragment="broadMatch"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="skos:mappingRelation"/>
+       </subPropertyOf>
+       <subPropertyOf>
+               <resource name="skos:broader"/>
+       </subPropertyOf>
+</ObjectProperty>
diff --git a/data/object_properties/skos¦broader b/data/object_properties/skos¦broader
new file mode 100644 (file)
index 0000000..813cecd
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has broader</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="skos:Concept">Concept</ref> which is directly broader than this Concept.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SKOS)" fragment="broader"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="skos:broaderTransitive"/>
+       </subPropertyOf>
+</ObjectProperty>
diff --git a/data/object_properties/skos¦broaderTransitive b/data/object_properties/skos¦broaderTransitive
new file mode 100644 (file)
index 0000000..6c6cc49
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty transitive="yes">
+       <label xml:lang="en">has transitively broader</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="skos:Concept">Concept</ref> which is broader than this Concept, figured transitively.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SKOS)" fragment="broaderTransitive"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="skos:semanticRelation"/>
+       </subPropertyOf>
+</ObjectProperty>
diff --git a/data/object_properties/skos¦closeMatch b/data/object_properties/skos¦closeMatch
new file mode 100644 (file)
index 0000000..285ea0e
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty symmetric="yes">
+       <label xml:lang="en">has close match</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="skos:Concept">Concept</ref> which is a close match for this Concept.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SKOS)" fragment="closeMatch"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="skos:mappingRelation"/>
+       </subPropertyOf>
+</ObjectProperty>
diff --git a/data/object_properties/skos¦exactMatch b/data/object_properties/skos¦exactMatch
new file mode 100644 (file)
index 0000000..e7ad401
--- /dev/null
@@ -0,0 +1,34 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty symmetric="yes">
+       <label xml:lang="en">has exact match</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="skos:Concept">Concept</ref> which is an exact match for this Concept.
+               </p>
+               <p>
+                       This property is disjoint with both <ptr target="skos:broadMatch"/> and <ptr target="skos:relatedMatch"/>.
+                       Because it is symmetric, it is consequently also disjoint with <ptr target="skos:narrowMatch"/>.
+               </p>
+               <p>
+                       <ptr target="(SKOS)"/> defines this property as being transitive; however, honouring this makes it impossible to reason about (in reasonable time) when also preserving the above disjointness relations.
+                       This ontology ignores the transitivity and maintains the disjointness.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SKOS)" fragment="exactMatch"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="skos:closeMatch"/>
+       </subPropertyOf>
+       <propertyDisjointWith>
+               <resource name="skos:broadMatch"/>
+       </propertyDisjointWith>
+       <propertyDisjointWith>
+               <resource name="skos:relatedMatch"/>
+       </propertyDisjointWith>
+</ObjectProperty>
diff --git a/data/object_properties/skos¦hasTopConcept b/data/object_properties/skos¦hasTopConcept
new file mode 100644 (file)
index 0000000..bb662b8
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has top concept</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="skos:Concept">Concept</ref> which is “top‐level” in this <ref target="skos:ConceptScheme">Concept Scheme</ref>.
+               </p>
+               <p>
+                       The definition of “top‐level” is intentionally vague; it does <em>not</em> necessarily imply anything about a Concepts relations to other Concepts.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SKOS)" fragment="hasTopConcept"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="skos:ConceptScheme"/>
+       </domain>
+       <range>
+               <resource name="skos:Concept"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/skos¦inScheme b/data/object_properties/skos¦inScheme
new file mode 100644 (file)
index 0000000..f670fba
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">in scheme</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="skos:ConceptScheme">Concept Scheme</ref> which this thing belongs to.
+               </p>
+               <p>
+                       This property is intended for use with <ref target="skos:Concept">Concepts</ref>, but it has no formal domain and can additionally be used with other things.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SKOS)" fragment="inScheme"/>
+       </isDefinedBy>
+       <range>
+               <resource name="skos:ConceptScheme"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/skos¦mappingRelation b/data/object_properties/skos¦mappingRelation
new file mode 100644 (file)
index 0000000..c7429de
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has mapping relation</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="skos:Concept">Concept</ref> which maps with some level of precision to this Concept.
+               </p>
+               <p>
+                       Mapping relations are typically only used to relate Concepts in different <ref target="skos:ConceptScheme">Concept Schemes</ref>, but this is not a strict requirement.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SKOS)" fragment="mappingRelation"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="skos:semanticRelation"/>
+       </subPropertyOf>
+</ObjectProperty>
diff --git a/data/object_properties/skos¦member b/data/object_properties/skos¦member
new file mode 100644 (file)
index 0000000..5a055e9
--- /dev/null
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has member</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="skos:Concept">Concept</ref> or <ref target="skos:Collection">Collection</ref> which is in this Collection.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SKOS)" fragment="member"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="skos:Collection"/>
+       </domain>
+       <range>
+               <Class>
+                       <unionOf>
+                               <resource name="skos:Concept"/>
+                               <resource name="skos:Collection"/>
+                       </unionOf>
+               </Class>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/skos¦memberList b/data/object_properties/skos¦memberList
new file mode 100644 (file)
index 0000000..6e2ec96
--- /dev/null
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty functional="yes">
+       <label xml:lang="en">has member list</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="rdf:List">List</ref> of <ref target="skos:Concept">Concepts</ref> or <ref target="skos:Collection">Collections</ref> which are in this <ref target="skos:OrderedCollection">Ordered Collection</ref>.
+               </p>
+               <p>
+                       The ordering of the Concepts or Collections in the List give their ordering within this Ordered Collection.
+               </p>
+               <p>
+                       <ptr target="(SKOS)"/> mandates that the elements in the List all be <ref target="skos:member">members</ref> of this Ordered Collection, but there is no way to formally specify this in Owl.
+                       Users of this ontology are encouraged to make such assertions directly.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SKOS)" fragment="memberList"/>
+       </isDefinedBy>
+       <domain>
+               <resource name="skos:OrderedCollection"/>
+       </domain>
+       <range>
+               <resource name="rdf:List"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/skos¦narrowMatch b/data/object_properties/skos¦narrowMatch
new file mode 100644 (file)
index 0000000..2c75658
--- /dev/null
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has narrow match</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="skos:Concept">Concept</ref> which is a narrow match for this Concept.
+               </p>
+               <p>
+                       This property is a specialization of <ptr target="skos:narrower"/> for use as a <ref target="skos:mappingRelation">mapping relation</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SKOS)" fragment="narrowMatch"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="skos:mappingRelation"/>
+       </subPropertyOf>
+       <subPropertyOf>
+               <resource name="skos:narrower"/>
+       </subPropertyOf>
+       <inverseOf>
+               <resource name="skos:broadMatch"/>
+       </inverseOf>
+</ObjectProperty>
diff --git a/data/object_properties/skos¦narrower b/data/object_properties/skos¦narrower
new file mode 100644 (file)
index 0000000..a99cef1
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has narrower</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="skos:Concept">Concept</ref> which is directly narrower than this Concept.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SKOS)" fragment="narrower"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="skos:narrowerTransitive"/>
+       </subPropertyOf>
+       <inverseOf>
+               <resource name="skos:broader"/>
+       </inverseOf>
+</ObjectProperty>
diff --git a/data/object_properties/skos¦narrowerTransitive b/data/object_properties/skos¦narrowerTransitive
new file mode 100644 (file)
index 0000000..95afb6e
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty transitive="yes">
+       <label xml:lang="en">has transitively narrower</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="skos:Concept">Concept</ref> which is narrower than this Concept, figured transitively.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SKOS)" fragment="narrowerTransitive"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="skos:semanticRelation"/>
+       </subPropertyOf>
+       <inverseOf>
+               <resource name="skos:broaderTransitive"/>
+       </inverseOf>
+</ObjectProperty>
diff --git a/data/object_properties/skos¦related b/data/object_properties/skos¦related
new file mode 100644 (file)
index 0000000..dd7a9b9
--- /dev/null
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty symmetric="yes">
+       <label xml:lang="en">has related</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="skos:Concept">Concept</ref> which is related to, but not <ref target="skos:broader">broader</ref> or <ref target="skos:narrower">narrower</ref> than, this Concept.
+               </p>
+               <p>
+                       This property is disjoint with <ptr target="skos:broader"/>, and (because it is a symmetric property) consequently also disjoint with <ptr target="skos:narrower"/>.
+                       <ptr target="(SKOS)"/> actually makes a stronger statement, and defines it as disjoint with <ptr target="skos:broaderTransitive"/>—but that isn¦t possible to reason about in Owl (in reasonable time).
+                       Users of this ontology should take care not to use this property not to relate Concepts which are broader or narrower than each other, even transitively.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SKOS)" fragment="related"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="skos:semanticRelation"/>
+       </subPropertyOf>
+       <propertyDisjointWith>
+               <resource name="skos:broader"/>
+       </propertyDisjointWith>
+</ObjectProperty>
diff --git a/data/object_properties/skos¦relatedMatch b/data/object_properties/skos¦relatedMatch
new file mode 100644 (file)
index 0000000..9558dd8
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty symmetric="yes">
+       <label xml:lang="en">has related match</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="skos:Concept">Concept</ref> which is a related match for this Concept.
+               </p>
+               <p>
+                       This property is a specialization of <ptr target="skos:related"/> for use as a <ref target="skos:mappingRelation">mapping relation</ref>.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SKOS)" fragment="relatedMatch"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="skos:mappingRelation"/>
+       </subPropertyOf>
+       <subPropertyOf>
+               <resource name="skos:related"/>
+       </subPropertyOf>
+</ObjectProperty>
diff --git a/data/object_properties/skos¦semanticRelation b/data/object_properties/skos¦semanticRelation
new file mode 100644 (file)
index 0000000..980ec7b
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">has semantic relation</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="skos:Concept">Concept</ref> which is semantically related to this Concept.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SKOS)" fragment="semanticRelation"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="skos:semanticRelation"/>
+       </subPropertyOf>
+       <domain>
+               <resource name="skos:Concept"/>
+       </domain>
+       <range>
+               <resource name="skos:Concept"/>
+       </range>
+</ObjectProperty>
diff --git a/data/object_properties/skos¦topConceptOf b/data/object_properties/skos¦topConceptOf
new file mode 100644 (file)
index 0000000..12eccc4
--- /dev/null
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE ObjectProperty SYSTEM "../../DTD">
+<ObjectProperty>
+       <label xml:lang="en">top concept of</label>
+       <comment xml:lang="en">
+               <p>
+                       A <ref target="skos:ConceptScheme">Concept Scheme</ref> in which this <ref target="skos:Concept">Concept</ref> is “top‐level”.
+               </p>
+               <p>
+                       The definition of “top‐level” is intentionally vague; it does <em>not</em> necessarily imply anything about this Concepts relations to other Concepts.
+               </p>
+       </comment>
+       <isDefinedBy>
+               <SpecificResource source="(SKOS)" fragment="topConceptOf"/>
+       </isDefinedBy>
+       <subPropertyOf>
+               <resource name="skos:inScheme"/>
+       </subPropertyOf>
+       <inverseOf>
+               <resource name="skos:hasTopConcept"/>
+       </inverseOf>
+       <domain>
+               <resource name="skos:Concept"/>
+       </domain>
+       <range>
+               <resource name="skos:ConceptScheme"/>
+       </range>
+</ObjectProperty>
diff --git a/data/ontologies/¦ b/data/ontologies/¦
new file mode 100644 (file)
index 0000000..fd3c0f1
--- /dev/null
@@ -0,0 +1,108 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<!DOCTYPE Ontology SYSTEM "../../DTD">
+<Ontology>
+       <label xml:lang="en">Ladys Vocabulary</label>
+       <comment xml:lang="en">
+               <p>
+                       A dictionary of terms.
+               </p>
+               <p>
+                       This ontology provides a formal living reference for the (rather informal) vocabular{y∣ies} used by Lady for her projects.
+                       The primary aim of this ontology is to promote consistency; i·e ensure that two projects do not use the same terms in different ways.
+                       However, this ontology is some·what opinionated, and there is <em>no</em> guarantee that it will agree with the interpretations of other people.
+               </p>
+               <p>
+                       Many terms defined in this ontology were originally defined else·where.
+                       A small number of terms were created by Lady, for which this ontology serves as the authoritative definition.
+                       Despite being an “ontology”, the intention of this vocabulary is not to be normatively‐binding but rather to descriptively track usage (as Lady would have it).
+               </p>
+               <p>
+                       Only terms intended for general interchange are recorded here.
+                       Some projects may make use of additional terms with implementation‐specific meanings.
+               </p>
+       </comment>
+       <declare>
+               <prefix/>
+               <namespace>https://vocab.ladys.computer/terms/</namespace>
+       </declare>
+       <declare>
+               <prefix>anno</prefix>
+               <namespace>http://www.w3.org/ns/oa#</namespace>
+       </declare>
+       <declare>
+               <prefix>awol</prefix>
+               <namespace>http://bblfish.net/work/atom-owl/2006-06-06/#</namespace>
+       </declare>
+       <declare>
+               <prefix>contact</prefix>
+               <namespace>http://www.w3.org/2000/10/swap/pim/contact#</namespace>
+       </declare>
+       <declare>
+               <prefix>dc11</prefix>
+               <namespace>http://purl.org/dc/elements/1.1/</namespace>
+       </declare>
+       <declare>
+               <prefix>dcmitype</prefix>
+               <namespace>http://purl.org/dc/dcmitype/</namespace>
+       </declare>
+       <declare>
+               <prefix>dcterms</prefix>
+               <namespace>http://purl.org/dc/terms/</namespace>
+       </declare>
+       <declare>
+               <prefix>doc</prefix>
+               <namespace>http://www.w3.org/2000/10/swap/pim/doc#</namespace>
+       </declare>
+       <declare>
+               <prefix>foaf</prefix>
+               <namespace>http://xmlns.com/foaf/0.1/</namespace>
+       </declare>
+       <declare>
+               <prefix>geo</prefix>
+               <namespace>http://www.w3.org/2003/01/geo/wgs84_pos#</namespace>
+       </declare>
+       <declare>
+               <prefix>ladys</prefix>
+               <namespace>https://vocab.ladys.computer/terms/</namespace>
+       </declare>
+       <declare>
+               <prefix>owl</prefix>
+               <namespace>http://www.w3.org/2002/07/owl#</namespace>
+       </declare>
+       <declare>
+               <prefix>rdf</prefix>
+               <namespace>http://www.w3.org/1999/02/22-rdf-syntax-ns#</namespace>
+       </declare>
+       <declare>
+               <prefix>rel</prefix>
+               <namespace>http://www.iana.org/assignments/relation/</namespace>
+       </declare>
+       <declare>
+               <prefix>rdfs</prefix>
+               <namespace>http://www.w3.org/2000/01/rdf-schema#</namespace>
+       </declare>
+       <declare>
+               <prefix>shacl</prefix>
+               <namespace>http://www.w3.org/ns/shacl#</namespace>
+       </declare>
+       <declare>
+               <prefix>skos</prefix>
+               <namespace>http://www.w3.org/2004/02/skos/core#</namespace>
+       </declare>
+       <declare>
+               <prefix>skosxl</prefix>
+               <namespace>http://www.w3.org/2008/05/skos-xl#</namespace>
+       </declare>
+       <declare>
+               <prefix>vocabstatus</prefix>
+               <namespace>http://www.w3.org/2003/06/sw-vocab-status/ns#</namespace>
+       </declare>
+       <declare>
+               <prefix>xsd</prefix>
+               <namespace>http://www.w3.org/2001/XMLSchema#</namespace>
+       </declare>
+</Ontology>
diff --git a/parsers/data/ontology.xslt b/parsers/data/ontology.xslt
new file mode 100644 (file)
index 0000000..d1eef55
--- /dev/null
@@ -0,0 +1,704 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: MPL-2.0
+-->
+<!--
+© 2024 Lady [@ Ladys Computer].
+
+This Source Code Form is subject to the terms of the Mozilla Public License, v 2.0.
+If a copy of the M·P·L was not distributed with this file, You can obtain one at <https://mozilla.org/MPL/2.0/>.
+-->
+<!DOCTYPE transform [
+       <!ENTITY continue '<apply-templates xmlns="http://www.w3.org/1999/XSL/Transform" select="@*[not(local-name()=&#x27;status&#x27; and namespace-uri()=&#x27;&#x27;)]"/><apply-templates xmlns="http://www.w3.org/1999/XSL/Transform" select="resource|value"/><apply-templates xmlns="http://www.w3.org/1999/XSL/Transform" select="@status|node()[not(self::resource or self::value)]"/>'>
+       <!ENTITY unprefix '<call-template xmlns="http://www.w3.org/1999/XSL/Transform" name="Vocab:unprefix"><with-param name="prefixed" select="string()"/></call-template>'>
+]>
+<transform
+       xmlns="http://www.w3.org/1999/XSL/Transform"
+       xmlns:Vocab="urn:fdc:vocab.ladys.computer:20240731:ns"
+       xmlns:Vocabvocab="urn:fdc:vocab.ladys.computer:20240731:vocab:"
+       xmlns:anno="http://www.w3.org/ns/oa#"
+       xmlns:dcterms="http://purl.org/dc/terms/"
+       xmlns:exsl="http://exslt.org/common"
+       xmlns:html="http://www.w3.org/1999/xhtml"
+       xmlns:owl="http://www.w3.org/2002/07/owl#"
+       xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+       xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
+       xmlns:shacl="http://www.w3.org/ns/shacl#"
+       xmlns:skos="http://www.w3.org/2004/02/skos/core#"
+       xmlns:vocabstatus="http://www.w3.org/2003/06/sw-vocab-status/ns#"
+       xmlns:xlink="http://www.w3.org/1999/xlink"
+       xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
+       xmlns:书社="urn:fdc:ladys.computer:20231231:Shu1She4"
+       extension-element-prefixes="exsl"
+       exclude-result-prefixes="Vocab"
+       version="1.0"
+>
+       <书社:id>urn:fdc:vocab.ladys.computer:20240731:parsers:data:ontology.xslt</书社:id>
+       <template name="Vocab:local-name">
+               <choose>
+                       <when test="substring-after($IDENTIFIER, '/')=''"/>
+                       <when test="starts-with(substring-after($IDENTIFIER, '/'), '%C2%A6')">
+                               <value-of select="substring-after(substring-after($IDENTIFIER, '/'), '%C2%A6')"/>
+                       </when>
+                       <when test="substring(substring-after($IDENTIFIER, '/'), 1, 1)='_' and substring($IDENTIFIER, string-length($IDENTIFIER), 1)='_'">
+                               <variable name="underscored" select="substring-after($IDENTIFIER, '/')"/>
+                               <text>(</text>
+                               <value-of select="substring($underscored, 2, string-length($underscored)-2)"/>
+                               <text>)</text>
+                       </when>
+                       <when test="not(contains(substring-after($IDENTIFIER, '/'), '%C2%A6'))">
+                               <value-of select="substring-after($IDENTIFIER, '/')"/>
+                       </when>
+                       <otherwise>
+                               <value-of select="substring-before(substring-after($IDENTIFIER, '/'), '%C2%A6')"/>
+                               <text>:</text>
+                               <value-of select="substring-after(substring-after($IDENTIFIER, '/'), '%C2%A6')"/>
+                       </otherwise>
+               </choose>
+       </template>
+       <template name="Vocab:prefix">
+               <param name="unprefixed" select="''"/>
+               <variable name="namespace" select="document('../../data/ontologies/%C2%A6')/Ontology/declare/namespace[starts-with($unprefixed, string())][1]"/>
+               <choose>
+                       <when test="not($namespace)">
+                               <value-of select="$unprefixed"/>
+                       </when>
+                       <otherwise>
+                               <value-of select="$namespace/preceding-sibling::prefix"/>
+                               <text>:</text>
+                               <value-of select="substring-after($unprefixed, $namespace)"/>
+                       </otherwise>
+               </choose>
+       </template>
+       <template name="Vocab:unprefix">
+               <param name="prefixed" select="''"/>
+               <variable name="prefix" select="substring-before($prefixed, ':')"/>
+               <choose>
+                       <when test="not(contains($prefixed, ':'))">
+                               <value-of select="document('../../data/ontologies/%C2%A6')/Ontology/declare/prefix[string()='']/following-sibling::namespace"/>
+                               <value-of select="$prefixed"/>
+                       </when>
+                       <when test="not(document('../../data/ontologies/%C2%A6')/Ontology/declare/prefix[string()=$prefix])">
+                               <value-of select="$prefixed"/>
+                       </when>
+                       <otherwise>
+                               <value-of select="document('../../data/ontologies/%C2%A6')/Ontology/declare/prefix[string()=$prefix]/following-sibling::namespace"/>
+                               <value-of select="substring-after($prefixed, ':')"/>
+                       </otherwise>
+               </choose>
+       </template>
+       <template match="*[namespace-uri()='']/@status" priority="2">
+               <element name="vocabstatus:term_status">
+                       <attribute name="rdf:datatype">
+                               <text>http://www.w3.org/2001/XMLSchema#string</text>
+                       </attribute>
+                       <value-of select="."/>
+               </element>
+       </template>
+       <template match="*[namespace-uri()='']/@name" priority="2">
+               <attribute name="rdf:about">
+                       &unprefix;
+               </attribute>
+       </template>
+       <template match="*[namespace-uri()='']/@datatype" priority="2">
+               <attribute name="rdf:datatype">
+                       &unprefix;
+               </attribute>
+       </template>
+       <template match="Ontology" priority="2">
+               <variable name="local-name">
+                       <call-template name="Vocab:local-name"/>
+               </variable>
+               <element name="rdf:RDF">
+                       <attribute name="书社:destination">
+                               <choose>
+                                       <when test="$local-name=''">
+                                               <text>ontology</text>
+                                       </when>
+                                       <otherwise>
+                                               <value-of select="translate($local-name, ':', '¦')"/>
+                                       </otherwise>
+                               </choose>
+                               <text>.rdf</text>
+                       </attribute>
+                       <attribute name="xml:base">
+                               <call-template name="Vocab:unprefix"/>
+                       </attribute>
+                       <!--
+                       The ontology element is “manually” created by the parser in order to provide dynamic control over its name·spaces, as X·S·L·T provides no mechanism for creating name·space nodes.
+
+                       (Technically, name·space nodes can be created with the `@namespace´ property on `<xslt:element>´, but the resulting prefix is, ⅌ the specification text, implementation‐specific.)
+                       -->
+                       <text disable-output-escaping="yes">&lt;owl:Ontology</text>
+                       <for-each select="declare">
+                               <text disable-output-escaping="yes"> xmlns</text>
+                               <if test="string(prefix)!=''">
+                                       <text disable-output-escaping="yes">:</text>
+                               </if>
+                               <value-of select="prefix"/>
+                               <text disable-output-escaping="yes">=&quot;</text>
+                               <value-of select="namespace"/>
+                               <text disable-output-escaping="yes">&quot;</text>
+                       </for-each>
+                       <text disable-output-escaping="yes"> rdf:about=&quot;</text>
+                       <call-template name="Vocab:unprefix">
+                               <with-param name="prefixed" select="$local-name"/>
+                       </call-template>
+                       <text disable-output-escaping="yes">&quot;&gt;</text>
+                       &continue;
+                       <text disable-output-escaping="yes">&lt;/owl:Ontology&gt;</text>
+                       <书社:link xlink:href="about:shushe?include=classes/" xlink:show="embed"/>
+                       <书社:link xlink:href="about:shushe?include=datatypes/" xlink:show="embed"/>
+                       <书社:link xlink:href="about:shushe?include=annotation_properties/" xlink:show="embed"/>
+                       <书社:link xlink:href="about:shushe?include=object_properties/" xlink:show="embed"/>
+                       <书社:link xlink:href="about:shushe?include=datatype_properties/" xlink:show="embed"/>
+                       <书社:link xlink:href="about:shushe?include=named_individuals/" xlink:show="embed"/>
+               </element>
+       </template>
+       <template match="SpecificResource" priority="2">
+               <choose>
+                       <when test="@fragment">
+                               <element name="anno:ResourceSelection">
+                                       <element name="anno:hasSource">
+                                               <attribute name="rdf:resource">
+                                                       <if test="not(contains(@source, '/'))">
+                                                               <text>about:vocab?individual=</text>
+                                                       </if>
+                                                       <value-of select="@source"/>
+                                               </attribute>
+                                       </element>
+                                       <element name="anno:hasSelector">
+                                               <element name="anno:FragmentSelector">
+                                                       <element name="rdf:value">
+                                                               <attribute name="rdf:datatype">
+                                                                       <text>http://www.w3.org/2001/XMLSchema#string</text>
+                                                               </attribute>
+                                                               <value-of select="@fragment"/>
+                                                       </element>
+                                                       <element name="dcterms:conformsTo">
+                                                               <attribute name="rdf:resource">
+                                                                       <text>https://html.spec.whatwg.org/</text>
+                                                               </attribute>
+                                                       </element>
+                                               </element>
+                                       </element>
+                               </element>
+                       </when>
+                       <otherwise>
+                               <attribute name="rdf:resource">
+                                       <if test="not(contains(@source, '/'))">
+                                               <text>about:vocab?individual=</text>
+                                       </if>
+                                       <value-of select="@source"/>
+                               </attribute>
+                       </otherwise>
+               </choose>
+       </template>
+       <template match="cell" priority="2">
+               <choose>
+                       <when test="parent::row[@role='label']">
+                               <element name="html:th">
+                                       <attribute name="scope">
+                                               <text>col</text>
+                                       </attribute>
+                                       <apply-templates/>
+                               </element>
+                       </when>
+                       <when test="@role='label'">
+                               <element name="html:th">
+                                       <attribute name="scope">
+                                               <text>row</text>
+                                       </attribute>
+                                       <apply-templates/>
+                               </element>
+                       </when>
+                       <otherwise>
+                               <element name="html:td">
+                                       <apply-templates/>
+                               </element>
+                       </otherwise>
+               </choose>
+       </template>
+       <template match="item" priority="2">
+               <element name="html:li">
+                       <apply-templates/>
+               </element>
+       </template>
+       <template match="list" priority="2">
+               <variable name="kind">
+                       <choose>
+                               <when test="rend='numbered'">
+                                       <text>ol</text>
+                               </when>
+                               <otherwise>
+                                       <text>ul</text>
+                               </otherwise>
+                       </choose>
+               </variable>
+               <element name="html:{$kind}">
+                       <apply-templates/>
+               </element>
+       </template>
+       <template match="note" priority="2">
+               <element name="html:sup">
+                       <element name="html:a">
+                               <attribute name="href">
+                                       <text>#footnote-</text>
+                                       <value-of select="generate-id()"/>
+                               </attribute>
+                               <value-of select="@n"/>
+                       </element>
+               </element>
+       </template>
+       <template match="table" priority="2">
+               <variable name="head" select="row[@role='label' and not(preceding-sibling::row[not(@role='label')])]"/>
+               <variable name="foot" select="row[@role='label' and not(following-sibling::row[not(@role='label')])]"/>
+               <element name="html:table">
+                       <if test="$head">
+                               <element name="html:thead">
+                                       <for-each select="$head">
+                                               <element name="html:tr">
+                                                       <apply-templates/>
+                                               </element>
+                                       </for-each>
+                               </element>
+                       </if>
+                       <element name="html:tbody">
+                               <for-each select="row[not(@role='label') or preceding-sibling::row[not(@role='label')] and following-sibling::row[not(@role='label')]]">
+                                       <element name="html:tr">
+                                               <apply-templates/>
+                                       </element>
+                               </for-each>
+                       </element>
+                       <if test="$foot">
+                               <element name="html:tfoot">
+                                       <for-each select="$foot">
+                                               <element name="html:tr">
+                                                       <apply-templates/>
+                                               </element>
+                                       </for-each>
+                               </element>
+                       </if>
+               </element>
+       </template>
+       <template match="ptr|ref" priority="2">
+               <element name="html:a">
+                       <attribute name="href">
+                               <call-template name="Vocab:unprefix">
+                                       <with-param name="prefixed" select="@target"/>
+                               </call-template>
+                       </attribute>
+                       <if test="@type">
+                               <attribute name="data-kind">
+                                       <value-of select="@type"/>
+                               </attribute>
+                       </if>
+                       <choose>
+                               <when test="self::ptr">
+                                       <element name="html:code">
+                                               <value-of select="@target"/>
+                                       </element>
+                               </when>
+                               <otherwise>
+                                       <apply-templates/>
+                               </otherwise>
+                       </choose>
+               </element>
+       </template>
+       <template match="resource" priority="2">
+               <choose>
+                       <when test="ancestor::p">
+                               <element name="html:code">
+                                       <variable name="prefixed">
+                                               <call-template name="Vocab:prefix">
+                                                       <with-param name="unprefixed" select="string(@name)"/>
+                                               </call-template>
+                                       </variable>
+                                       <choose>
+                                               <when test="contains($prefixed, '/') or contains(substring-after($prefixed, ':'), ':')">
+                                                       <text>&lt;</text>
+                                                       <call-template name="Vocab:unprefix">
+                                                               <with-param name="prefixed" select="string(@name)"/>
+                                                       </call-template>
+                                                       <text>&gt;</text>
+                                               </when>
+                                               <otherwise>
+                                                       <value-of select="$prefixed"/>
+                                               </otherwise>
+                                       </choose>
+                               </element>
+                       </when>
+                       <otherwise>
+                               <for-each select="@name">
+                                       <attribute name="rdf:resource">
+                                               &unprefix;
+                                       </attribute>
+                               </for-each>
+                       </otherwise>
+               </choose>
+       </template>
+       <template match="value" priority="2">
+               <choose>
+                       <when test="ancestor::p">
+                               <element name="html:code">
+                                       <text>&quot;</text>
+                                       <apply-templates/>
+                                       <text>&quot;</text>
+                                       <choose>
+                                               <when test="@xml:lang">
+                                                       <text>@</text>
+                                                       <value-of select="@xml:lang"/>
+                                               </when>
+                                               <when test="@datatype">
+                                                       <variable name="prefixed">
+                                                               <call-template name="Vocab:prefix">
+                                                                       <with-param name="unprefixed" select="string(@datatype)"/>
+                                                               </call-template>
+                                                       </variable>
+                                                       <if test="$prefixed!='xsd:string'">
+                                                               <choose>
+                                                                       <when test="contains($prefixed, '/') or contains(substring-after($prefixed, ':'), ':')">
+                                                                               <text>&lt;</text>
+                                                                               <call-template name="Vocab:unprefix">
+                                                                                       <with-param name="prefixed" select="string(@name)"/>
+                                                                               </call-template>
+                                                                               <text>&gt;</text>
+                                                                       </when>
+                                                                       <otherwise>
+                                                                               <value-of select="$prefixed"/>
+                                                                       </otherwise>
+                                                               </choose>
+                                                       </if>
+                                               </when>
+                                       </choose>
+                               </element>
+                       </when>
+                       <otherwise>
+                               &continue;
+                       </otherwise>
+               </choose>
+       </template>
+       <template match="DatatypeProperty/@functional|ObjectProperty/@functional|ObjectProperty/@inverseFunctional|ObjectProperty/@reflexive|ObjectProperty/@irreflexive|ObjectProperty/@symmetric|ObjectProperty/@asymmetric|ObjectProperty/@transitive" priority="2"/>
+       <template match="@*[namespace-uri()='']" priority="1">
+               <message terminate="yes">
+                       <text>Error: Unrecognized attribute in null namespace: @</text>
+                       <value-of select="local-name()"/>
+               </message>
+       </template>
+       <template match="*[namespace-uri()='']" priority="1">
+               <variable name="spaced" select="concat(' ', local-name(), ' ')"/>
+               <variable name="qname">
+                       <choose>
+                               <when test="contains(' superClassOf ', $spaced)">
+                                       <text>Vocabvocab:</text>
+                               </when>
+                               <when test="contains(' code em p strong ', $spaced)">
+                                       <text>html:</text>
+                               </when>
+                               <when test="contains(' AllDifferent AllDisjointClasses AllDisjointProperties AnnotationProperty Class DatatypeProperty NamedIndividual NegativeObjectPropertyAssertion ObjectProperty Ontology Restriction allValuesFrom assertionProperty cardinality complementOf differentFrom disjointUnionOf disjointWith equivalentClass equivalentProperty hasKey hasSelf hasValue intersectionOf inverseOf maxCardinality maxQualifiedCardinality members minCardinality minQualifiedCardinality onClass onDataRange onDatatype onProperty oneOf propertyChainAxiom propertyDisjointWith qualifiedCardinality sameAs someValuesFrom sourceIndividual targetIndividual unionOf withRestrictions ', $spaced)">
+                                       <text>owl:</text>
+                               </when>
+                               <when test="contains(' type ', $spaced)">
+                                       <text>rdf:</text>
+                               </when>
+                               <when test="contains(' Datatype comment domain isDefinedBy label range subClassOf subPropertyOf ', $spaced)">
+                                       <text>rdfs:</text>
+                               </when>
+                               <when test="contains(' declare namespace prefix ', $spaced)">
+                                       <text>shacl:</text>
+                               </when>
+                               <when test="contains(' inScheme ', $spaced)">
+                                       <text>skos:</text>
+                               </when>
+                               <otherwise>
+                                       <message terminate="yes">
+                                               <text>Error: Unrecognized element in null namespace: &lt;</text>
+                                               <value-of select="local-name()"/>
+                                               <text>&gt;</text>
+                                       </message>
+                               </otherwise>
+                       </choose>
+                       <value-of select="local-name()"/>
+               </variable>
+               <element name="{$qname}">
+                       <variable name="iri">
+                               <choose>
+                                       <when test="@name">
+                                               <for-each select="@name">
+                                                       &unprefix;
+                                               </for-each>
+                                       </when>
+                                       <when test="not(parent::*)">
+                                               <call-template name="Vocab:unprefix">
+                                                       <with-param name="prefixed">
+                                                               <call-template name="Vocab:local-name"/>
+                                                       </with-param>
+                                               </call-template>
+                                       </when>
+                               </choose>
+                       </variable>
+                       <if test="not(@name) and not(parent::*)">
+                               <attribute name="rdf:about">
+                                       <value-of select="$iri"/>
+                               </attribute>
+                       </if>
+                       <choose>
+                               <when test="contains(' comment ', $spaced)">
+                                       <attribute name="rdf:parseType">
+                                               <text>Literal</text>
+                                       </attribute>
+                                       <element name="html:div">
+                                               &continue;
+                                               <if test=".//note">
+                                                       <element name="html:footer">
+                                                               <element name="html:h5">
+                                                                       <attribute name="lang">
+                                                                               <text>en</text>
+                                                                       </attribute>
+                                                                       <attribute name="xml:lang">
+                                                                               <text>en</text>
+                                                                       </attribute>
+                                                                       <text>Footnotes</text>
+                                                               </element>
+                                                               <for-each select=".//note">
+                                                                       <element name="html:div">
+                                                                               <attribute name="id">
+                                                                                       <text>footnote-</text>
+                                                                                       <value-of select="generate-id()"/>
+                                                                               </attribute>
+                                                                               <element name="html:p">
+                                                                                       <apply-templates select="p[1]/@*"/>
+                                                                                       <element name="html:strong">
+                                                                                               <value-of select="@n"/>
+                                                                                               <text>.</text>
+                                                                                       </element>
+                                                                                       <text> </text>
+                                                                                       <apply-templates select="p[1]/node()"/>
+                                                                               </element>
+                                                                               <apply-templates select="p[1]/following-sibling::p"/>
+                                                                       </element>
+                                                               </for-each>
+                                                       </element>
+                                               </if>
+                                       </element>
+                               </when>
+                               <when test="contains(' disjointUnionOf hasKey intersectionOf members oneOf propertyChainAxiom unionOf withRestrictions ', $spaced)">
+                                       <attribute name="rdf:parseType">
+                                               <text>Collection</text>
+                                       </attribute>
+                                       <apply-templates select="@*"/>
+                                       <for-each select="node()">
+                                               <choose>
+                                                       <when test="self::resource">
+                                                               <element name="rdf:Description">
+                                                                       <attribute name="rdf:about">
+                                                                               <for-each select="@name">
+                                                                                       &unprefix;
+                                                                               </for-each>
+                                                                       </attribute>
+                                                               </element>
+                                                       </when>
+                                                       <when test="self::langRange or self::length or self::maxExclusive or self::maxInclusive or self::maxLength or self::minExclusive or self::minInclusive or self::minLength or self::pattern">
+                                                               <variable name="ns">
+                                                                       <choose>
+                                                                               <when test="self::langRange">
+                                                                                       <text>rdf</text>
+                                                                               </when>
+                                                                               <otherwise>
+                                                                                       <text>xsd</text>
+                                                                               </otherwise>
+                                                                       </choose>
+                                                               </variable>
+                                                               <element name="rdf:Description">
+                                                                       <element name="{$ns}:{local-name()}">
+                                                                               <attribute name="rdf:datatype">
+                                                                                       <choose>
+                                                                                               <when test="self::length or self::minLength or self::maxLength">
+                                                                                                       <text>http://www.w3.org/2001/XMLSchema#nonNegativeInteger</text>
+                                                                                               </when>
+                                                                                               <when test="self::langRange or self::pattern">
+                                                                                                       <text>http://www.w3.org/2001/XMLSchema#string</text>
+                                                                                               </when>
+                                                                                               <otherwise>
+                                                                                                       <call-template name="unprefix">
+                                                                                                               <with-param name="prefixed" select="@datatype"/>
+                                                                                                       </call-template>
+                                                                                               </otherwise>
+                                                                                       </choose>
+                                                                               </attribute>
+                                                                               <value-of select="."/>
+                                                                       </element>
+                                                               </element>
+                                                       </when>
+                                                       <otherwise>
+                                                               <apply-templates select="."/>
+                                                       </otherwise>
+                                               </choose>
+                                       </for-each>
+                               </when>
+                               <when test="contains(' hasSelf ', $spaced)">
+                                       <attribute name="rdf:datatype">
+                                               <text>http://www.w3.org/2001/XMLSchema#boolean</text>
+                                       </attribute>
+                                       <text>true</text>
+                               </when>
+                               <otherwise>
+                                       <if test="contains(' namespace ', $spaced)">
+                                               <attribute name="rdf:datatype">
+                                                       <text>http://www.w3.org/2001/XMLSchema#anyURI</text>
+                                               </attribute>
+                                       </if>
+                                       <if test="contains(' cardinality maxCardinality maxQualifiedCardinality minCardinality minQualifiedCardinality qualifiedCardinality ', $spaced)">
+                                               <attribute name="rdf:datatype">
+                                                       <text>http://www.w3.org/2001/XMLSchema#nonNegativeInteger</text>
+                                               </attribute>
+                                       </if>
+                                       <if test="contains(' prefix ', $spaced)">
+                                               <attribute name="rdf:datatype">
+                                                       <text>http://www.w3.org/2001/XMLSchema#string</text>
+                                               </attribute>
+                                       </if>
+                                       <if test="contains(' declare ', $spaced)">
+                                               <attribute name="rdf:parseType">
+                                                       <text>Resource</text>
+                                               </attribute>
+                                       </if>
+                                       <choose>
+                                               <when test="starts-with($qname, 'html:')">
+                                                       <apply-templates/>
+                                               </when>
+                                               <otherwise>
+                                                       &continue;
+                                               </otherwise>
+                                       </choose>
+                                       <if test="contains(' DatatypeProperty ObjectProperty ', $spaced)">
+                                               <if test="@functional='yes'">
+                                                       <element name="rdf:type">
+                                                               <attribute name="rdf:resource">
+                                                                       <text>http://www.w3.org/2002/07/owl#FunctionalProperty</text>
+                                                               </attribute>
+                                                       </element>
+                                               </if>
+                                       </if>
+                                       <if test="contains(' ObjectProperty ', $spaced)">
+                                               <if test="@inverseFunctional='yes'">
+                                                       <element name="rdf:type">
+                                                               <attribute name="rdf:resource">
+                                                                       <text>http://www.w3.org/2002/07/owl#InverseFunctionalProperty</text>
+                                                               </attribute>
+                                                       </element>
+                                               </if>
+                                               <if test="@reflexive='yes'">
+                                                       <element name="rdf:type">
+                                                               <attribute name="rdf:resource">
+                                                                       <text>http://www.w3.org/2002/07/owl#ReflexiveProperty</text>
+                                                               </attribute>
+                                                       </element>
+                                               </if>
+                                               <if test="@irreflexive='yes'">
+                                                       <element name="rdf:type">
+                                                               <attribute name="rdf:resource">
+                                                                       <text>http://www.w3.org/2002/07/owl#IrreflexiveProperty</text>
+                                                               </attribute>
+                                                       </element>
+                                               </if>
+                                               <if test="@symmetric='yes'">
+                                                       <element name="rdf:type">
+                                                               <attribute name="rdf:resource">
+                                                                       <text>http://www.w3.org/2002/07/owl#SymmetricProperty</text>
+                                                               </attribute>
+                                                       </element>
+                                               </if>
+                                               <if test="@asymmetric='yes'">
+                                                       <element name="rdf:type">
+                                                               <attribute name="rdf:resource">
+                                                                       <text>http://www.w3.org/2002/07/owl#AsymmetricProperty</text>
+                                                               </attribute>
+                                                       </element>
+                                               </if>
+                                               <if test="@transitive='yes'">
+                                                       <element name="rdf:type">
+                                                               <attribute name="rdf:resource">
+                                                                       <text>http://www.w3.org/2002/07/owl#TransitiveProperty</text>
+                                                               </attribute>
+                                                       </element>
+                                               </if>
+                                       </if>
+                               </otherwise>
+                       </choose>
+                       <if test="not(parent::*)">
+                               <variable name="base">
+                                       <call-template name="Vocab:unprefix"/>
+                               </variable>
+                               <variable name="curie">
+                                       <call-template name="Vocab:prefix">
+                                               <with-param name="unprefixed" select="$iri"/>
+                                       </call-template>
+                               </variable>
+                               <variable name="shortname">
+                                       <choose>
+                                               <when test="string($curie)!='' and not(contains($curie, '/'))">
+                                                       <value-of select="$curie"/>
+                                               </when>
+                                               <otherwise>
+                                                       <call-template name="Vocab:local-name"/>
+                                               </otherwise>
+                                       </choose>
+                               </variable>
+                               <variable name="localid">
+                                       <choose>
+                                               <when test="$shortname=':' or $shortname=''">
+                                                       <text>index</text>
+                                               </when>
+                                               <when test="starts-with($shortname, ':')">
+                                                       <value-of select="substring-after($shortname, ':')"/>
+                                               </when>
+                                               <otherwise>
+                                                       <value-of select="$shortname"/>
+                                               </otherwise>
+                                       </choose>
+                               </variable>
+                               <element name="rdfs:isDefinedBy">
+                                       <attribute name="rdf:resource">
+                                               <value-of select="$base"/>
+                                               <choose>
+                                                       <when test="contains(' Class Datatype ', $spaced)">
+                                                               <text>classes/</text>
+                                                       </when>
+                                                       <when test="contains(' AnnotationProperty DatatypeProperty ObjectProperty ', $spaced)">
+                                                               <text>properties/</text>
+                                                       </when>
+                                                       <otherwise>
+                                                               <text>individuals/</text>
+                                                       </otherwise>
+                                               </choose>
+                                               <value-of select="$localid"/>
+                                               <text>.xhtml</text>
+                                       </attribute>
+                               </element>
+                               <if test="self::NamedIndividual and substring($shortname, 1, 1)='(' and substring($shortname, string-length($shortname), 1)=')'">
+                                       <element name="owl:sameAs">
+                                               <attribute name="rdf:resource">
+                                                       <value-of select="$base"/>
+                                                       <value-of select="$localid"/>
+                                               </attribute>
+                                       </element>
+                               </if>
+                       </if>
+               </element>
+       </template>
+       <template match="text()[ancestor::cell or ancestor::p]" priority="1">
+               <variable name="normalized" select="normalize-space()"/>
+               <if test="$normalized!=''">
+                       <if test="preceding-sibling::* and normalize-space(substring(., 1, 1))=''">
+                               <text> </text>
+                       </if>
+                       <value-of select="$normalized"/>
+                       <if test="following-sibling::* and normalize-space(substring(., string-length(), 1))=''">
+                               <text> </text>
+                       </if>
+               </if>
+       </template>
+       <template match="text()[not(ancestor::cell or ancestor::p) and normalize-space()='']" priority="1"/>
+</transform>
diff --git a/site/index.xhtml b/site/index.xhtml
new file mode 100644 (file)
index 0000000..7da8470
--- /dev/null
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<article
+       xmlns="http://www.w3.org/1999/xhtml"
+       xmlns:xlink="http://www.w3.org/1999/xlink"
+       xmlns:书社="urn:fdc:ladys.computer:20231231:Shu1She4"
+       xml:lang="en"
+>
+       <书社:link xlink:href="about:shushe?include=ontology.rdf" xlink:show="embed"/>
+</article>
diff --git a/site/style.css b/site/style.css
new file mode 100644 (file)
index 0000000..78fb49c
--- /dev/null
@@ -0,0 +1,112 @@
+@charset "UTF-8";
+/*
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+*/
+@namespace "http://www.w3.org/1999/xhtml";
+:Root{ Line-Height: 1.2; Text-Align: Justify }
+:Root *[hidden] { Display: None }
+body{ Display: Flow-Root; Margin-Block: 0; Margin-Inline: Auto; Padding-Inline: 3REM; Max-Inline-Size: 45EM }
+article,
+aside,
+footer,
+header,
+nav,
+section{ Display: Block; Margin-Block: 1.2REM; Margin-Inline: 0; Padding: 0 }
+article{ Display: Flow-Root }
+footer{ Margin-Block-End: 0; Font-Size: .8REM }
+header{ Margin-Block-Start: 0 }
+blockquote{ Display: Flow-Root; Position: Relative; Margin-Block: 1.2REM; Margin-Inline: Auto; Padding-Block: 0; Padding-Inline: 2REM; Font-Style: Italic }
+blockquote::before{ Display: Block; Position: Absolute; Inset-Block-Start: 0; Inset-Inline-End: 0; Margin: 0; Padding: 0; Inline-Size: 2REM; Font-Size: 2REM; Font-Style: Normal; Text-Align: Center; Content: "»" }
+blockquote blockquote{ Border-Inline-Start: .125REM Solid CurrentColor; Padding-Inline: .875REM 1REM; Text-Align: Start }
+blockquote blockquote::before{ Content: None }
+div.owl{ Display: Grid; Margin-Block: 1.2REM; Margin-Inline: -2REM; Border-Block-Start: 1PX Solid; Border-Block-End: 3PX Double; Border-Inline-Start: 5PX Solid; Border-Inline-End: 1.5PX Dashed; Grid: Auto-Flow / Auto 1FR; Gap: 1.2REM 1REM; Container-Name: owl; Container-Type: Inline-Size }
+div.owl dl{ Margin-Inline: 0 Calc(2REM - 1.5PX) }
+div.owl dl:Only-Child{ Grid-Column: 1 / Span 2; Margin-Inline-Start: Calc(2REM - 5PX) }
+div.owl dd::after{ Display: Block; Clear: Both; Content: "" }
+div.owl dd:Not(:Last-Child)::after{ Margin-Block-End: .3REM; Margin-Inline-Start: -2REM; Border-Block-End: Thin Dashed; Padding-Block-End: .3REM; Opacity: .35 }
+div.owl details.inference{ Display: Contents }
+div.owl details.inference>summary{ Display: Grid; Float: Right; Inline-Size: Max-Content; Grid: Max-Content / Auto-Flow }
+div.owl details.inference>summary::-webkit-details-marker{ Display: None /* for Safari */ }
+div.owl details.inference>summary::before{ Display: List-Item; List-Style: Inside Disclosure-Closed; Content: "" }
+div.owl details.inference[open]>summary::before{ List-Style-Type: Disclosure-Open }
+div.owl details.inference>div{ Display: Block; Font-Size: .8REM; Font-Style: Italic; Line-Height: 1.5; Text-Align: End }
+div.owl table{ Display: Block; Margin: 0; Padding-Inline: Calc(2REM - 5PX) Calc(1REM - 1PX); Border-Inline-End: 1PX Dotted; Inline-Size: Max-Content }
+div.owl tbody,
+div.owl tr,
+div.owl td{ Display: Contents }
+div.owl label{ Margin-Block: 1.2REM; Display: Grid; Grid: Auto-Flow / Max-Content 2REM; Justify-Content: End; Align-Items: Center }
+div.owl input{ Justify-Self: Center }
+@container owl (Max-Inline-Size: 28REM) {
+       div.owl dl{ Grid-Column: 1 / Span 2; Margin-Inline-Start: Calc(2REM - 5PX) }
+       div.owl table{ Grid-Column: 1 / Span 2; Margin-Block-Start: 1.2REM; Border-Block-End: 1PX Dotted; Border-Inline-End: None; Padding-Block-End: Calc(1.2REM - 1PX); Padding-Inline: Calc(50CQI - 12REM); Inline-Size: Auto; Columns: 2 7REM; Gap: 1REM; Text-Align: End }
+       div.owl label{ Grid: Auto-Flow / 1FR 2REM; Margin: 0 }
+       div.owl td+td label{ Margin-Block-Start: 1.2REM } }
+caption{ Margin: 0; Padding-Block: .3REM; Padding-Inline: .25REM }
+table{ Margin-Block: 1.2REM; Margin-Inline: Auto; Border-Collapse: Separate; Border-Spacing: .125REM .15REM; Padding: 0 }
+td>table:Only-Child{ Margin: Auto; Inline-Size: 100% }
+tbody+tbody::before { Display: Table-Row; Height: 1.2REM; Content: "" }
+td,
+th{ Border: None; Border-Radius: .125REM; Padding-Block: .15REM; Padding-Inline: .125REM; Vertical-Align: Top }
+thead>th{ Text-Decoration: Underline }
+tbody th:First-Child,
+thead:has(+tbody th:First-Child) th:First-Child{ Padding-Inline-End: .375REM; Text-Align: End }
+ul,ol{ Display: Block; Margin: 0; Padding-Inline: 2REM 0; Text-Align: Start }
+ul{ List-Style-Type: Circle }
+nav ul,nav li ul,nav li li ul{ List-Style-Type: None }
+nav ul{ Columns: 18REM 2; Gap: 3REM; Column-Rule: Thin Solid }
+nav ul:Has(ul){ Columns: Auto }
+li ul{ List-Style-Type: Square }
+li li ul{ List-Style-Type: Disc }
+ol,nav li ol{ List-Style-Type: Upper-Roman }
+li ol,nav ol{ List-Style-Type: Decimal-Leading-Zero }
+li li ol{ List-Style-Type: Lower-Latin }
+li li li ol{ List-Style-Type: Lower-Greek }
+li li li li ol{ List-Style-Type: Decimal }
+nav li{ Padding-Inline-Start: 1.5REM; Text-Indent: -1.5EM }
+dl{ Display: Block; Margin: 0; Padding: 0; Text-Align: Start }
+dl>dt,
+dl>div>dt{ Margin-Block: 1.2REM 0; Font-Weight: Bold }
+dl>dd,
+dl>div>dd{ Display: List-Item; Margin-Inline: 2EM 0 }
+dl>dd:Last-Child,
+dl>div:Last-Child>dd:Last-Child{ Margin-Bottom: 1.2EM }
+article.term>header,
+h1,
+h2,
+h3{ Display: Block; Margin-Block: Calc(1.2REM - 1PX); Margin-Inline: Auto; Border-Block-Start: 1PX Solid; Border-Block-End: 1PX Solid; Padding-Block: 0; Padding-Inline: .5EM; Max-Inline-Size: Max-Content; Font-Size: 3REM; Font-Weight: Inherit; Text-Align: Center }
+article.term h1{ Margin-Block: 1.2REM 0; Border: None; Font-Weight: Bold }
+article.term>header{ Box-Sizing: Border-Box; Position: Relative; Margin-Block: -1.2REM 1.2REM; Border-Block-Start: None; Border-Block-End: 3PX Double; Padding-Block: .4REM Calc(.4REM - 1PX); Max-Inline-Size: None; Font-Size: 2REM; Font-Style: Italic; Z-Index: 0 }
+article.term>header :Any-Link{ Color: Inherit }
+h2{ Position: Relative; Margin-Block-Start: Calc(2.4REM - 1PX); Border-Block-Start-Style: Dashed; Font-Size: 2REM; Z-Index: 0 }
+article.term>header::before,
+h2::before{ Position: Absolute; Inset-Block-End: 0; Inset-Inline: 0; Block-Size: .2REM; Border-Inline: 1PX Solid; Z-Index: -1; Content: "" }
+article.term>header::before{ Inset-Block-End: -3PX; Block-Size: Calc(.3REM + 3PX) }
+h3{ Margin-Block-End: Calc(1.2REM - 3PX); Margin-Inline: -1.5REM 0; Border-Block-Start: 1PX Solid; Border-Block-End: 3PX Double; Border-Inline: 2PX Solid; Padding-Block: .3REM; Padding-Inline: Calc(.75REM - 2PX); Font-Size: 1.5REM; Text-Align: Start }
+hgroup p{ Margin-Block: 0; Font-Size: 1.5REM; Text-Align: Center }
+hgroup p:Last-Child{ Margin-Block: .4REM 1.2REM; Font-Style: Italic }
+h4,
+h5,
+h6{ Display: Block; Margin-Block: .6REM; Margin-Inline: 0; Font-Size: 1REM; Font-Weight: Inherit; Text-Align: Start; Text-Decoration: Underline }
+h4{ Margin-Block-Start: 1.2REM; Font-Weight: Bolder }
+h5{ Font-Style: Italic; Letter-Spacing: Calc(1REM / 12); Text-Align: Start; Text-Decoration: Underline; Text-Transform: Lowercase }
+figcaption{ Display: Block; Margin-Block: .4REM; Margin-Inline: 0; Padding: 0; Font-Size: .8REM;
+    Text-Align: End }
+hr{ Display: Block; Margin-Block: Calc(1.2REM - .5PX); Margin-Inline: Auto; Border: None; Border-Block-End: 1PX Solid; Padding: 0; Block-Size: 0; Inline-Size: 23.6% }
+p,footer div{ Display: Block; Margin-Block: 0; Margin-Inline: Auto }
+dl+p,
+li+li p,
+p+p,
+p+* li p,
+ol+p,
+ul+p,
+footer div+div{ Margin-Block-Start: 1.2EM }
+header p+p{ Margin-Block-Start: 0 }
+pre{ Display: Block; Margin: 0; Padding: 1REM; Max-Inline-Size: Calc(100% - 1REM); Font-Size: .8EM; Font-Family: Monospace, Monospace; Line-Height: 1; Text-Align: Start }
+h3 :Any-Link{ Color: Inherit }
+[title]:Not([title=""]):Not(a){ Border: None; Text-Decoration-Line: Underline; Text-Decoration-Style: Dotted }
+code{ Display: Inline; Font-Size: .8EM; Font-Family: Monospace, Monospace; Line-Height: 1 }
+small{ Display: Inline; Font-Size: .8EM; Line-Height: 1.5 }
+sub{ Display: Inline; Font-Size: .8EM; Vertical-Align: Sub; Line-Height: .5 }
+sup{ Display: Inline; Position: Relative; Font-Size: .8EM; Vertical-Align: Super; Line-Height: .5; Z-Index: 0 }
+sup :Any-Link{ Margin-Inline: -.25EM; Padding-Inline: .25EM; Z-Index: 1 }
diff --git a/site/terms b/site/terms
new file mode 100644 (file)
index 0000000..1e8eba8
--- /dev/null
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: CC0-1.0
+-->
+<书社:archive
+       xmlns="http://www.w3.org/1999/xhtml"
+       xmlns:xlink="http://www.w3.org/1999/xlink"
+       xmlns:书社="urn:fdc:ladys.computer:20231231:Shu1She4"
+       书社:expanded=""
+>
+       <书社:link xlink:href="about:shushe?include=ontology.rdf" xlink:show="embed"/>
+</书社:archive>
diff --git a/transforms/data/cleanup.xslt b/transforms/data/cleanup.xslt
new file mode 100644 (file)
index 0000000..0422f09
--- /dev/null
@@ -0,0 +1,45 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: MPL-2.0
+-->
+<!--
+© 2024 Lady [@ Ladys Computer].
+
+This Source Code Form is subject to the terms of the Mozilla Public License, v 2.0.
+If a copy of the M·P·L was not distributed with this file, You can obtain one at <https://mozilla.org/MPL/2.0/>.
+-->
+<transform
+       xmlns="http://www.w3.org/1999/XSL/Transform"
+       xmlns:exsl="http://exslt.org/common"
+       xmlns:html="http://www.w3.org/1999/xhtml"
+       xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+       xmlns:owl="http://www.w3.org/2002/07/owl#"
+       xmlns:shacl="http://www.w3.org/ns/shacl#"
+       xmlns:xlink="http://www.w3.org/1999/xlink"
+       xmlns:书社="urn:fdc:ladys.computer:20231231:Shu1She4"
+       extension-element-prefixes="exsl"
+       version="1.0"
+>
+       <书社:id>urn:fdc:vocab.ladys.computer:20240731:transforms:cleanup.xslt</书社:id>
+       <template match="/rdf:RDF" mode="书社:apply">
+               <variable name="fragment">
+                       <书社:raw-text>
+                               <text>&lt;?xml version="1.0"?></text>
+                               <element name="书社:serialize-xml">
+                                       <element name="rdf:RDF">
+                                               <for-each select="owl:Ontology/namespace::*">
+                                                       <copy/>
+                                               </for-each>
+                                               <apply-templates mode="书社:apply"/>
+                                       </element>
+                               </element>
+                       </书社:raw-text>
+               </variable>
+               <apply-templates select="exsl:node-set($fragment)" mode="书社:apply"/>
+       </template>
+       <template match="/rdf:RDF//@xlink:*|/rdf:RDF//@书社:*|/rdf:RDF//书社:*|/rdf:RDF//text()[not(ancestor::html:*/ancestor::rdf:RDF) and normalize-space()='']|/rdf:RDF//comment()" mode="书社:apply" priority="10"/>
+       <template match="/rdf:RDF//text()[not(ancestor::html:*/ancestor::rdf:RDF) and normalize-space()!='']" mode="书社:apply" priority="10">
+               <value-of select="normalize-space()"/>
+       </template>
+</transform>
diff --git a/transforms/data/rdf.xslt b/transforms/data/rdf.xslt
new file mode 100644 (file)
index 0000000..420dfda
--- /dev/null
@@ -0,0 +1,198 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: MPL-2.0
+-->
+<!--
+© 2024 Lady [@ Ladys Computer].
+
+This Source Code Form is subject to the terms of the Mozilla Public License, v 2.0.
+If a copy of the M·P·L was not distributed with this file, You can obtain one at <https://mozilla.org/MPL/2.0/>.
+-->
+<transform
+       xmlns="http://www.w3.org/1999/XSL/Transform"
+       xmlns:Vocab="urn:fdc:vocab.ladys.computer:20240731:ns"
+       xmlns:Vocabvocab="urn:fdc:vocab.ladys.computer:20240731:vocab:"
+       xmlns:html="http://www.w3.org/1999/xhtml"
+       xmlns:owl="http://www.w3.org/2002/07/owl#"
+       xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+       xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
+       xmlns:shacl="http://www.w3.org/ns/shacl#"
+       xmlns:书社="urn:fdc:ladys.computer:20231231:Shu1She4"
+       exclude-result-prefixes="Vocab Vocabvocab"
+       version="1.0"
+>
+       <书社:id>urn:fdc:vocab.ladys.computer:20240731:transforms:data:rdf.xslt</书社:id>
+       <key name="Vocab:name" match="owl:AnnotationProperty|owl:Class|owl:DatatypeProperty|owl:NamedIndividual|owl:ObjectProperty|rdfs:Datatype" use="@rdf:about|owl:sameAs/@rdf:resource"/>
+       <template name="Vocab:base">
+               <value-of select="//rdf:RDF//owl:Ontology/shacl:declare/shacl:namespace[preceding-sibling::shacl:prefix='']"/>
+       </template>
+       <template name="Vocab:prefix">
+               <param name="unprefixed" select="''"/>
+               <variable name="namespace" select="//rdf:RDF//owl:Ontology/shacl:declare/shacl:namespace[starts-with($unprefixed, string()) and string(preceding-sibling::shacl:prefix)!=''][1]"/>
+               <choose>
+                       <when test="not($namespace)">
+                               <value-of select="$unprefixed"/>
+                       </when>
+                       <otherwise>
+                               <value-of select="$namespace/preceding-sibling::shacl:prefix"/>
+                               <text>:</text>
+                               <value-of select="substring-after($unprefixed, $namespace)"/>
+                       </otherwise>
+               </choose>
+       </template>
+       <template match="rdf:RDF/*[@rdf:about and Vocabvocab:superClassOf]" priority="2">
+               <copy>
+                       <apply-templates select="@*|node()[not(self::Vocabvocab:superClassOf)]"/>
+               </copy>
+               <for-each select="Vocabvocab:superClassOf/*[1]">
+                       <copy>
+                               <apply-templates select="@*|node()"/>
+                               <element name="rdfs:subClassOf">
+                                       <attribute name="rdf:resource">
+                                               <value-of select="../../@rdf:about"/>
+                                       </attribute>
+                               </element>
+                       </copy>
+               </for-each>
+       </template>
+       <template match="@rdf:resource" priority="2">
+               <variable name="base-iri">
+                       <call-template name="Vocab:base"/>
+               </variable>
+               <attribute name="rdf:resource">
+                       <choose>
+                               <when test="starts-with(., 'about:vocab?') and contains(., '=')">
+                                       <variable name="query" select="substring-after(., 'about:vocab?')"/>
+                                       <variable name="qterm" select="substring-before($query, '=')"/>
+                                       <variable name="subdir">
+                                               <choose>
+                                                       <when test="$qterm='class'">
+                                                               <text>classes/</text>
+                                                       </when>
+                                                       <when test="$qterm='property'">
+                                                               <text>properties/</text>
+                                                       </when>
+                                                       <otherwise>
+                                                               <text>individuals/</text>
+                                                       </otherwise>
+                                               </choose>
+                                       </variable>
+                                       <variable name="match" select="//*[rdfs:isDefinedBy[starts-with(@rdf:resource, $base-iri) and substring-after(@rdf:resource, $base-iri)=concat($subdir, substring-after($query, '='), '.xhtml')]]"/>
+                                       <choose>
+                                               <when test="$match">
+                                                       <value-of select="$match/@rdf:about"/>
+                                               </when>
+                                               <otherwise>
+                                                       <value-of select="."/>
+                                               </otherwise>
+                                       </choose>
+                               </when>
+                               <otherwise>
+                                       <value-of select="."/>
+                               </otherwise>
+                       </choose>
+               </attribute>
+       </template>
+       <template match="html:a" priority="1">
+               <variable name="base-prefix">
+                       <call-template name="Vocab:prefix">
+                               <with-param name="unprefixed">
+                                       <call-template name="Vocab:base"/>
+                               </with-param>
+                       </call-template>
+               </variable>
+               <variable name="kind" select="@data-kind"/>
+               <variable name="linked-resource" select="key('Vocab:name', @href)[not($kind) or $kind='class' and (self::owl:Class or self::owl:Datatype) or $kind='property' and (self::owl:AnnotationProperty or self::owl:ObjectProperty or self::owl:DatatypeProperty) or $kind='individual' and self::owl:NamedIndividual][1]"/>
+               <copy>
+                       <apply-templates select="@*[not(contains(' data-curie data-kind ', local-name()) and namespace-uri()='')]"/>
+                       <choose>
+                               <when test="$linked-resource">
+                                       <variable name="curie">
+                                               <call-template name="Vocab:prefix">
+                                                       <with-param name="unprefixed" select="string(@href)"/>
+                                               </call-template>
+                                       </variable>
+                                       <variable name="localid">
+                                               <choose>
+                                                       <when test="starts-with($curie, $base-prefix)">
+                                                               <value-of select="substring-after($curie, $base-prefix)"/>
+                                                       </when>
+                                                       <otherwise>
+                                                               <value-of select="$curie"/>
+                                                       </otherwise>
+                                               </choose>
+                                       </variable>
+                                       <attribute name="data-curie">
+                                               <value-of select="$curie"/>
+                                       </attribute>
+                                       <attribute name="data-kind">
+                                               <choose>
+                                                       <when test="@data-kind">
+                                                               <value-of select="@data-kind"/>
+                                                       </when>
+                                                       <when test="$linked-resource[self::owl:Class or self::owl:Datatype]">
+                                                               <text>class</text>
+                                                       </when>
+                                                       <when test="$linked-resource[self::owl:AnnotationProperty or self::owl:ObjectProperty or self::owl:DatatypeProperty]">
+                                                               <text>property</text>
+                                                       </when>
+                                                       <otherwise>
+                                                               <text>individual</text>
+                                                       </otherwise>
+                                               </choose>
+                                       </attribute>
+                                       <choose>
+                                               <when test="html:code[not(preceding-sibling::node() or following-sibling::node())]">
+                                                       <for-each select="$linked-resource">
+                                                               <variable name="wrappername">
+                                                                       <choose>
+                                                                               <when test="substring($localid, 1, 1)='(' and substring($localid, string-length($localid), 1)=')'">
+                                                                                       <text>cite</text>
+                                                                               </when>
+                                                                               <otherwise>
+                                                                                       <text>span</text>
+                                                                               </otherwise>
+                                                                       </choose>
+                                                               </variable>
+                                                               <attribute name="title">
+                                                                       <value-of select="rdfs:label[1]"/>
+                                                                       <text> (</text>
+                                                                       <value-of select="$curie"/>
+                                                                       <text>)</text>
+                                                               </attribute>
+                                                               <element name="html:{$wrappername}">
+                                                                       <attribute name="lang">
+                                                                               <value-of select="rdfs:label[1]/@xml:lang"/>
+                                                                       </attribute>
+                                                                       <attribute name="xml:lang">
+                                                                               <value-of select="rdfs:label[1]/@xml:lang"/>
+                                                                       </attribute>
+                                                                       <value-of select="rdfs:label[1]"/>
+                                                               </element>
+                                                       </for-each>
+                                               </when>
+                                               <otherwise>
+                                                       <apply-templates/>
+                                               </otherwise>
+                                       </choose>
+                               </when>
+                               <otherwise>
+                                       <apply-templates/>
+                               </otherwise>
+                       </choose>
+               </copy>
+       </template>
+       <template match="html:a/@href[starts-with(., '#footnote-')]">
+               <attribute name="href">
+                       <text>#footnote-</text>
+                       <value-of select="generate-id(ancestor::rdfs:comment//@id[string()=substring-after(current(), '#')])"/>
+               </attribute>
+       </template>
+       <template match="html:*/@id[starts-with(., 'footnote-')]" priority="1">
+               <attribute name="id">
+                       <text>footnote-</text>
+                       <value-of select="generate-id()"/>
+               </attribute>
+       </template>
+</transform>
diff --git a/transforms/site/infer.xslt b/transforms/site/infer.xslt
new file mode 100644 (file)
index 0000000..38ad449
--- /dev/null
@@ -0,0 +1,295 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: MPL-2.0
+-->
+<!--
+© 2024 Lady [@ Ladys Computer].
+
+This Source Code Form is subject to the terms of the Mozilla Public License, v 2.0.
+If a copy of the M·P·L was not distributed with this file, You can obtain one at <https://mozilla.org/MPL/2.0/>.
+-->
+
+<transform
+       xmlns="http://www.w3.org/1999/XSL/Transform"
+       xmlns:Vocab="urn:fdc:vocab.ladys.computer:20240731:ns"
+       xmlns:Vocabvocab="urn:fdc:vocab.ladys.computer:20240731:vocab:"
+       xmlns:exsl="http://exslt.org/common"
+       xmlns:exslfunc="http://exslt.org/functions"
+       xmlns:owl="http://www.w3.org/2002/07/owl#"
+       xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+       xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
+       xmlns:书社="urn:fdc:ladys.computer:20231231:Shu1She4"
+       exclude-result-prefixes="Vocab Vocabvocab"
+       extension-element-prefixes="exsl exslfunc"
+       version="1.0"
+>
+       <书社:id>urn:fdc:vocab.ladys.computer:20240731:transforms:site:infer.xslt</书社:id>
+       <key name="Vocab:equivalent-class" match="owl:Class|owl:Restriction|rdfs:Datatype" use="owl:equivalentClass/@rdf:resource"/>
+       <key name="Vocab:equivalent-property" match="owl:AnnotationProperty|owl:DatatypeProperty|owl:ObjectProperty" use="owl:equivalentProperty/@rdf:resource"/>
+       <key name="Vocab:equivalent-individual" match="owl:NamedIndividual" use="owl:sameAs/@rdf:resource"/>
+       <key name="Vocab:inverse-class" match="owl:Class|rdfs:Datatype" use="owl:complementOf/@rdf:resource"/>
+       <key name="Vocab:inverse-property" match="owl:DatatypeProperty|owl:ObjectProperty" use="owl:inverseOf/@rdf:resource"/>
+       <key name="Vocab:disjoint-class" match="owl:Class|rdfs:Datatype" use="owl:disjointWith/@rdf:resource"/>
+       <key name="Vocab:disjoint-property" match="owl:DatatypeProperty|owl:ObjectProperty" use="owl:propertyDisjointWith/@rdf:resource"/>
+       <exslfunc:function name="Vocab:get-equivalents">
+               <param name="resource-nodes"/>
+               <param name="kind" select="'individual'"/>
+               <param name="include-self" select="false()"/>
+               <param name="exclude" select="/.."/>
+               <variable name="result-fragment">
+                       <call-template name="Vocab:get-fragment-of-equivalents">
+                               <with-param name="kind" select="$kind"/>
+                               <with-param name="resource-nodes" select="$resource-nodes"/>
+                               <with-param name="include-self" select="$include-self"/>
+                               <with-param name="exclude" select="$exclude"/>
+                       </call-template>
+               </variable>
+               <exslfunc:result select="exsl:node-set($result-fragment)/*"/>
+       </exslfunc:function>
+       <exslfunc:function name="Vocab:get-transitives">
+               <param name="resource-nodes"/>
+               <param name="kind" select="'individual'"/>
+               <param name="relationship"/>
+               <param name="include-self" select="false()"/>
+               <param name="exclude" select="/.."/>
+               <variable name="result-fragment">
+                       <call-template name="Vocab:get-fragment-of-transitives">
+                               <with-param name="kind" select="$kind"/>
+                               <with-param name="relationship" select="$relationship"/>
+                               <with-param name="resource-nodes" select="$resource-nodes"/>
+                               <with-param name="include-self" select="$include-self"/>
+                               <with-param name="exclude" select="$exclude"/>
+                       </call-template>
+               </variable>
+               <exslfunc:result select="exsl:node-set($result-fragment)/*"/>
+       </exslfunc:function>
+       <exslfunc:function name="Vocab:get-symmetrics">
+               <param name="resource-nodes"/>
+               <param name="kind"/>
+               <param name="relationship"/>
+               <param name="include-self" select="false()"/>
+               <param name="exclude" select="/.."/>
+               <variable name="root" select="/"/>
+               <variable name="relationship-names" select="Vocab:relationship-names($kind, $relationship)"/>
+               <variable name="result-fragment">
+                       <if test="string($relationship-names/Vocab:local-name)!=''">
+                               <variable name="relationship-key">
+                                       <text>Vocab:</text>
+                                       <value-of select="$relationship"/>
+                                       <text>-</text>
+                                       <value-of select="$kind"/>
+                               </variable>
+                               <variable name="equivalents" select="Vocab:get-equivalents($resource-nodes, $kind, true(), $exclude)"/>
+                               <variable name="unfiltered-result-fragment">
+                                       <if test="$include-self">
+                                               <copy-of select="$equivalents"/>
+                                       </if>
+                                       <for-each select="$equivalents/@rdf:about">
+                                               <variable name="source" select="string()"/>
+                                               <for-each select="$root">
+                                                       <for-each select="key(concat('Vocab:named-', $kind), $source)">
+                                                               <apply-templates select="*[local-name()=$relationship-names/Vocab:local-name and namespace-uri()=$relationship-names/Vocab:namespace]" mode="Vocab:format-get">
+                                                                       <with-param name="source" select="$source"/>
+                                                               </apply-templates>
+                                                       </for-each>
+                                                       <for-each select="key($relationship-key, $source)">
+                                                               <apply-templates select="." mode="Vocab:format-get">
+                                                                       <with-param name="source" select="string(@rdf:about)"/>
+                                                               </apply-templates>
+                                                       </for-each>
+                                               </for-each>
+                                       </for-each>
+                               </variable>
+                               <for-each select="exsl:node-set($unfiltered-result-fragment)/*">
+                                       <copy-of select="self::*[not(@rdf:about and ($exclude|preceding-sibling::*)/@rdf:about[string()=string(current()/@rdf:about)])]"/>
+                               </for-each>
+                       </if>
+               </variable>
+               <exslfunc:result select="exsl:node-set($result-fragment)/*"/>
+       </exslfunc:function>
+       <exslfunc:function name="Vocab:relationship-names">
+               <param name="kind"/>
+               <param name="relationship"/>
+               <variable name="result-fragment">
+                       <element name="Vocab:local-name">
+                               <choose>
+                                       <when test="$relationship='equivalent' and $kind='class'">
+                                               <text>equivalentClass</text>
+                                       </when>
+                                       <when test="$relationship='equivalent' and $kind='property'">
+                                               <text>equivalentProperty</text>
+                                       </when>
+                                       <when test="$relationship='equivalent' and $kind='individual'">
+                                               <text>sameAs</text>
+                                       </when>
+                                       <when test="$relationship='super' and $kind='class'">
+                                               <text>subClassOf</text>
+                                       </when>
+                                       <when test="$relationship='super' and $kind='property'">
+                                               <text>subPropertyOf</text>
+                                       </when>
+                                       <when test="$relationship='inverse' and $kind='class'">
+                                               <text>complementOf</text>
+                                       </when>
+                                       <when test="$relationship='inverse' and $kind='property'">
+                                               <text>inverseOf</text>
+                                       </when>
+                                       <when test="$relationship='disjoint' and $kind='class'">
+                                               <text>disjointWith</text>
+                                       </when>
+                                       <when test="$relationship='disjoint' and $kind='property'">
+                                               <text>propertyDisjointWith</text>
+                                       </when>
+                               </choose>
+                       </element>
+                       <element name="Vocab:namespace">
+                               <choose>
+                                       <when test="$relationship='super'">
+                                               <text>http://www.w3.org/2000/01/rdf-schema#</text>
+                                       </when>
+                                       <otherwise>
+                                               <text>http://www.w3.org/2002/07/owl#</text>
+                                       </otherwise>
+                               </choose>
+                       </element>
+               </variable>
+               <exslfunc:result select="exsl:node-set($result-fragment)"/>
+       </exslfunc:function>
+       <template name="Vocab:get-fragment-of-equivalents">
+               <param name="kind" select="'individual'"/>
+               <param name="resource-nodes" select="/.."/> <!-- not yet processed, but selected -->
+               <param name="include-self" select="true()"/> <!-- make false on first run to not include provided nodes -->
+               <param name="exclude" select="/.."/> <!-- leave named nodes out of result -->
+               <param name="gotten" select="/.."/> <!-- already processed -->
+               <variable name="root" select="/"/>
+               <variable name="relationship-names" select="Vocab:relationship-names($kind, 'equivalent')"/>
+               <variable name="gotten-nodes" select="exsl:node-set($gotten)/*"/>
+               <variable name="next"> <!-- new selection -->
+                       <for-each select="$resource-nodes/@rdf:about">
+                               <!-- Iterate over each named resource to get, find it, and get the equivalent resources. -->
+                               <if test="not(($gotten-nodes|../preceding-sibling::*)/@rdf:about[string()=string(current())])">
+                                       <variable name="source" select="string()"/>
+                                       <for-each select="$root">
+                                               <for-each select="key(concat('Vocab:named-', $kind), $source)">
+                                                       <apply-templates select="*[local-name()=$relationship-names/Vocab:local-name and namespace-uri()=$relationship-names/Vocab:namespace]" mode="Vocab:format-get">
+                                                               <with-param name="source" select="$source"/>
+                                                       </apply-templates>
+                                               </for-each>
+                                               <for-each select="key(concat('Vocab:equivalent-', $kind), $source)">
+                                                       <apply-templates select="." mode="Vocab:format-get">
+                                                               <with-param name="source" select="string(@rdf:about)"/>
+                                                       </apply-templates>
+                                               </for-each>
+                                       </for-each>
+                               </if>
+                       </for-each>
+               </variable>
+               <variable name="next-nodes" select="exsl:node-set($next)/*"/>
+               <if test="$include-self">
+                       <for-each select="$resource-nodes">
+                               <if test="not(@rdf:about and ($exclude|$gotten-nodes|preceding-sibling::*)/@rdf:about[string()=string(current()/@rdf:about)])">
+                                       <apply-templates select="." mode="Vocab:format-get"/>
+                               </if>
+                       </for-each>
+               </if>
+               <if test="$next-nodes">
+                       <call-template name="Vocab:get-fragment-of-equivalents">
+                               <with-param name="kind" select="$kind"/>
+                               <with-param name="resource-nodes" select="$next-nodes"/>
+                               <with-param name="exclude" select="$exclude"/>
+                               <with-param name="gotten">
+                                       <copy-of select="$gotten-nodes"/>
+                                       <for-each select="$resource-nodes">
+                                               <if test="not(@rdf:about and ($gotten-nodes|preceding-sibling::*)/@rdf:about[string()=string(current()/@rdf:about)])">
+                                                       <copy-of select="."/>
+                                               </if>
+                                       </for-each>
+                               </with-param>
+                       </call-template>
+               </if>
+       </template>
+       <template name="Vocab:get-fragment-of-transitives">
+               <param name="kind" select="'individual'"/>
+               <param name="relationship"/>
+               <param name="resource-nodes" select="/.."/> <!-- not yet processed, but selected -->
+               <param name="include-self" select="true()"/> <!-- make false on first run to not include provided nodes -->
+               <param name="exclude" select="/.."/> <!-- leave named nodes out of result -->
+               <param name="gotten" select="/.."/> <!-- already processed -->
+               <variable name="root" select="/"/>
+               <variable name="relationship-names" select="Vocab:relationship-names($kind, $relationship)"/>
+               <if test="string($relationship-names/Vocab:local-name)!=''">
+                       <variable name="gotten-nodes" select="exsl:node-set($gotten)/*"/>
+                       <variable name="equivalent-nodes" select="Vocab:get-equivalents($resource-nodes, $kind, true(), $gotten-nodes)"/> <!-- already deduped -->
+                       <variable name="next"> <!-- new selection -->
+                               <for-each select="$equivalent-nodes/@rdf:about">
+                                       <!-- Iterate over each named resource to get, find it, and get the related resources. -->
+                                       <variable name="source" select="string()"/>
+                                       <for-each select="$root">
+                                               <for-each select="key(concat('Vocab:named-', $kind), $source)">
+                                                       <apply-templates select="*[local-name()=$relationship-names/Vocab:local-name and namespace-uri()=$relationship-names/Vocab:namespace]" mode="Vocab:format-get">
+                                                               <with-param name="source" select="$source"/>
+                                                       </apply-templates>
+                                               </for-each>
+                                       </for-each>
+                               </for-each>
+                       </variable>
+                       <variable name="next-nodes" select="exsl:node-set($next)/*"/>
+                       <if test="$include-self">
+                               <for-each select="$equivalent-nodes">
+                                       <if test="not(@rdf:about and $exclude/@rdf:about[string()=string(current()/@rdf:about)])">
+                                               <copy-of select="."/>
+                                       </if>
+                               </for-each>
+                       </if>
+                       <if test="$next-nodes">
+                               <call-template name="Vocab:get-fragment-of-transitives">
+                                       <with-param name="kind" select="$kind"/>
+                                       <with-param name="relationship" select="$relationship"/>
+                                       <with-param name="resource-nodes" select="$next-nodes"/>
+                                       <with-param name="exclude" select="$exclude"/>
+                                       <with-param name="gotten">
+                                               <copy-of select="$gotten-nodes"/>
+                                               <copy-of select="$equivalent-nodes"/>
+                                       </with-param>
+                               </call-template>
+                       </if>
+               </if>
+       </template>
+       <template match="*" mode="Vocab:format-get">
+               <param name="source"/>
+               <choose>
+                       <when test="Vocabvocab:inferred-from">
+                               <copy-of select="."/>
+                       </when>
+                       <when test="@rdf:about|@rdf:resource">
+                               <element name="rdf:Description">
+                                       <attribute name="rdf:about">
+                                               <value-of select="@rdf:about|@rdf:resource"/>
+                                       </attribute>
+                                       <if test="string($source)!=''">
+                                               <element name="Vocabvocab:inferred-from">
+                                                       <attribute name="rdf:resource">
+                                                               <value-of select="$source"/>
+                                                       </attribute>
+                                               </element>
+                                       </if>
+                               </element>
+                       </when>
+                       <otherwise>
+                               <for-each select="*">
+                                       <copy>
+                                               <copy-of select="@*|node()"/>
+                                               <if test="string($source)!=''">
+                                                       <element name="Vocabvocab:inferred-from">
+                                                               <attribute name="rdf:resource">
+                                                                       <value-of select="$source"/>
+                                                               </attribute>
+                                                       </element>
+                                               </if>
+                                       </copy>
+                               </for-each>
+                       </otherwise>
+               </choose>
+       </template>
+</transform>
diff --git a/transforms/site/metadata.xslt b/transforms/site/metadata.xslt
new file mode 100644 (file)
index 0000000..92f6135
--- /dev/null
@@ -0,0 +1,62 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: MPL-2.0
+-->
+<!--
+© 2024 Lady [@ Ladys Computer].
+
+This Source Code Form is subject to the terms of the Mozilla Public License, v 2.0.
+If a copy of the M·P·L was not distributed with this file, You can obtain one at <https://mozilla.org/MPL/2.0/>.
+-->
+<transform
+       xmlns="http://www.w3.org/1999/XSL/Transform"
+       xmlns:html="http://www.w3.org/1999/xhtml"
+       xmlns:书社="urn:fdc:ladys.computer:20231231:Shu1She4"
+       version="1.0"
+>
+       <书社:id>urn:fdc:vocab.ladys.computer:20240731:transforms:site:metadata.xslt</书社:id>
+       <template match="书社:id[string()='urn:fdc:vocab.ladys.computer:20240731:transforms:site:metadata.xslt']" mode="书社:metadata">
+               <element name="html:meta">
+                       <attribute name="name">
+                               <text>viewport</text>
+                       </attribute>
+                       <attribute name="content">
+                               <text>width=device-width,initial-scale=1</text>
+                       </attribute>
+               </element>
+               <element name="html:link">
+                       <attribute name="href">
+                               <text>/ontology.rdf</text>
+                       </attribute>
+                       <attribute name="rel">
+                               <text>describedby</text>
+                       </attribute>
+                       <attribute name="type">
+                               <text>application/rdf+xml</text>
+                       </attribute>
+               </element>
+               <element name="html:link">
+                       <attribute name="href">
+                               <text>/ontology.rdf</text>
+                       </attribute>
+                       <attribute name="rel">
+                               <text>meta</text>
+                       </attribute>
+                       <attribute name="type">
+                               <text>application/rdf+xml</text>
+                       </attribute>
+               </element>
+               <element name="html:link">
+                       <attribute name="href">
+                               <text>/style.css</text>
+                       </attribute>
+                       <attribute name="rel">
+                               <text>stylesheet</text>
+                       </attribute>
+                       <attribute name="type">
+                               <text>text/css</text>
+                       </attribute>
+               </element>
+       </template>
+</transform>
diff --git a/transforms/site/render.xslt b/transforms/site/render.xslt
new file mode 100644 (file)
index 0000000..a0b50df
--- /dev/null
@@ -0,0 +1,554 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: MPL-2.0
+-->
+<!--
+© 2024 Lady [@ Ladys Computer].
+
+This Source Code Form is subject to the terms of the Mozilla Public License, v 2.0.
+If a copy of the M·P·L was not distributed with this file, You can obtain one at <https://mozilla.org/MPL/2.0/>.
+-->
+<!DOCTYPE transform [
+       <!ENTITY en '<attribute xmlns="http://www.w3.org/1999/XSL/Transform" name="lang"><text>en</text></attribute><attribute xmlns="http://www.w3.org/1999/XSL/Transform" name="xml:lang"><text>en</text></attribute>'>
+]>
+<transform
+       xmlns="http://www.w3.org/1999/XSL/Transform"
+       xmlns:Vocab="urn:fdc:vocab.ladys.computer:20240731:ns"
+       xmlns:Vocabvocab="urn:fdc:vocab.ladys.computer:20240731:vocab:"
+       xmlns:html="http://www.w3.org/1999/xhtml"
+       xmlns:owl="http://www.w3.org/2002/07/owl#"
+       xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+       xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
+       xmlns:书社="urn:fdc:ladys.computer:20231231:Shu1She4"
+       exclude-result-prefixes="Vocab Vocabvocab"
+       version="1.0"
+>
+       <书社:id>urn:fdc:vocab.ladys.computer:20240731:transforms:site:render.xslt</书社:id>
+       <template name="Vocab:more-info">
+               <element name="html:span">
+                       &en;
+                       <element name="html:span">
+                               <attribute name="aria-hidden">
+                                       <text>true</text>
+                               </attribute>
+                               <attribute name="style">
+                                       <text>text-decoration:none</text>
+                               </attribute>
+                               <attribute name="title">
+                                       <text>click to show rationale</text>
+                               </attribute>
+                               <text>?⃝</text>
+                       </element>
+                       <element name="html:span">
+                               <attribute name="style">
+                                       <text>clip:rect(1px,1px,1px,1px);clip-path:inset(50%);height:1px;width:1px;margin:-1px;overflow:hidden;padding:0;position:absolute</text>
+                               </attribute>
+                               <text>rationale</text>
+                       </element>
+               </element>
+       </template>
+       <template match="rdfs:Datatype" mode="Vocab:render-class">
+               <param name="root" select="/"/>
+               <param name="use-parens" select="false()"/>
+               <choose>
+                       <when test="@rdf:about">
+                               <apply-templates select="@rdf:about" mode="Vocab:render-class">
+                                       <with-param name="root" select="$root"/>
+                               </apply-templates>
+                       </when>
+                       <when test="owl:oneOf">
+                               <text>{</text>
+                               <!-- owl:oneOf is not really supported; lists of literals are difficult. -->
+                               <apply-templates select="owl:oneOf[1]" mode="Vocab:render-value">
+                                       <with-param name="root" select="$root"/>
+                               </apply-templates>
+                               <text>}</text>
+                       </when>
+                       <when test="owl:complementOf">
+                               <if test="$use-parens">
+                                       <text>(</text>
+                               </if>
+                               <text>not </text>
+                               <apply-templates select="(owl:complimentOf/@rdf:resource|owl:complimentOf/*)[1]" mode="Vocab:render-class">
+                                       <with-param name="root" select="$root"/>
+                                       <with-param name="use-parens" select="true()"/>
+                               </apply-templates>
+                               <if test="$use-parens">
+                                       <text>)</text>
+                               </if>
+                       </when>
+                       <when test="owl:intersectionOf">
+                               <if test="$use-parens">
+                                       <text>(</text>
+                               </if>
+                               <for-each select="owl:intersectionOf/*">
+                                       <apply-templates select="." mode="Vocab:render-class">
+                                               <with-param name="root" select="$root"/>
+                                               <with-param name="use-parens" select="true()"/>
+                                       </apply-templates>
+                                       <if test="position()&lt;last()">
+                                               <text> and </text>
+                                       </if>
+                               </for-each>
+                               <if test="$use-parens">
+                                       <text>)</text>
+                               </if>
+                       </when>
+                       <when test="owl:unionOf">
+                               <if test="$use-parens">
+                                       <text>(</text>
+                               </if>
+                               <for-each select="owl:unionOf/*">
+                                       <apply-templates select="." mode="Vocab:render-class">
+                                               <with-param name="root" select="$root"/>
+                                               <with-param name="use-parens" select="true()"/>
+                                       </apply-templates>
+                                       <if test="position()&lt;last()">
+                                               <text> or </text>
+                                       </if>
+                               </for-each>
+                               <if test="$use-parens">
+                                       <text>)</text>
+                               </if>
+                       </when>
+                       <when test="owl:withRestrictions">
+                               <apply-templates select="(owl:onDatatype/@rdf:resource|owl:onDatatype/*)[1]" mode="Vocab:render-class">
+                                       <with-param name="root" select="$root"/>
+                                       <with-param name="use-parens" select="true()"/>
+                               </apply-templates>
+                               <text>[</text>
+                               <for-each select="owl:withRestrictions/*/*">
+                                       <variable name="restriction-namespace" select="namespace-uri()"/>
+                                       <variable name="restriction-local-name" select="local-name()"/>
+                                       <for-each select="$root">
+                                               <call-template name="Vocab:link-to">
+                                                       <with-param name="resource">
+                                                               <value-of select="$restriction-namespace"/>
+                                                               <value-of select="$restriction-local-name"/>
+                                                       </with-param>
+                                                       <with-param name="kind" select="'property'"/>
+                                               </call-template>
+                                       </for-each>
+                                       <text> </text>
+                                       <apply-templates select="." mode="Vocab:render-value">
+                                               <with-param name="root" select="$root"/>
+                                       </apply-templates>
+                                       <if test="position()&lt;last()">
+                                               <text>, </text>
+                                       </if>
+                               </for-each>
+                               <text>]</text>
+                       </when>
+                       <otherwise>
+                               <text>??</text>
+                       </otherwise>
+               </choose>
+               <apply-templates select="Vocabvocab:inferred-from" mode="Vocab:render-class">
+                       <with-param name="root" select="$root"/>
+               </apply-templates>
+       </template>
+       <template match="owl:Class" mode="Vocab:render-class">
+               <param name="root" select="/"/>
+               <param name="resource-context"/>
+               <param name="use-parens" select="false()"/>
+               <choose>
+                       <when test="@rdf:about">
+                               <apply-templates select="@rdf:about" mode="Vocab:render-class">
+                                       <with-param name="root" select="$root"/>
+                                       <with-param name="resource-context" select="$resource-context"/>
+                               </apply-templates>
+                       </when>
+                       <when test="owl:oneOf">
+                               <text>{</text>
+                               <for-each select="owl:oneOf/*">
+                                       <apply-templates select="." name="Vocab:render-individual">
+                                               <with-param name="root" select="$root"/>
+                                               <with-param name="resource-context" select="$resource-context"/>
+                                       </apply-templates>
+                                       <if test="position()&lt;last()">
+                                               <text>, </text>
+                                       </if>
+                               </for-each>
+                               <text>}</text>
+                       </when>
+                       <when test="owl:complementOf">
+                               <if test="$use-parens">
+                                       <text>(</text>
+                               </if>
+                               <text>not </text>
+                               <apply-templates select="(owl:complementOf/@rdf:resource|owl:complementOf/*)[1]" mode="Vocab:render-class">
+                                       <with-param name="root" select="$root"/>
+                                       <with-param name="resource-context" select="$resource-context"/>
+                                       <with-param name="use-parens" select="true()"/>
+                               </apply-templates>
+                               <if test="$use-parens">
+                                       <text>)</text>
+                               </if>
+                       </when>
+                       <when test="owl:intersectionOf">
+                               <if test="$use-parens">
+                                       <text>(</text>
+                               </if>
+                               <for-each select="owl:intersectionOf/*">
+                                       <apply-templates select="." mode="Vocab:render-class">
+                                               <with-param name="root" select="$root"/>
+                                               <with-param name="resource-context" select="$resource-context"/>
+                                               <with-param name="use-parens" select="true()"/>
+                                       </apply-templates>
+                                       <if test="position()&lt;last()">
+                                               <text> and </text>
+                                       </if>
+                               </for-each>
+                               <if test="$use-parens">
+                                       <text>)</text>
+                               </if>
+                       </when>
+                       <when test="owl:unionOf">
+                               <if test="$use-parens">
+                                       <text>(</text>
+                               </if>
+                               <for-each select="owl:unionOf/*">
+                                       <apply-templates select="." mode="Vocab:render-class">
+                                               <with-param name="root" select="$root"/>
+                                               <with-param name="resource-context" select="$resource-context"/>
+                                               <with-param name="use-parens" select="true()"/>
+                                       </apply-templates>
+                                       <if test="position()&lt;last()">
+                                               <text> or </text>
+                                       </if>
+                               </for-each>
+                               <if test="$use-parens">
+                                       <text>)</text>
+                               </if>
+                       </when>
+                       <otherwise>
+                               <text>??</text>
+                       </otherwise>
+               </choose>
+               <apply-templates select="Vocabvocab:inferred-from" mode="Vocab:render-class">
+                       <with-param name="root" select="$root"/>
+                       <with-param name="resource-context" select="$resource-context"/>
+               </apply-templates>
+       </template>
+       <template match="owl:Restriction" mode="Vocab:render-class">
+               <param name="root" select="/"/>
+               <param name="resource-context"/>
+               <param name="use-parens" select="false()"/>
+               <variable name="property" select="(owl:onProperty/@rdf:resource|owl:onProperty/*)[1]"/>
+               <variable name="is-on-datatype-property" select="$property/self::owl:DatatypeProperty or not($property/self::*) and //rdf:RDF//owl:DatatypeProperty[@rdf:about=string($property) or owl:sameAs/@rdf:resource=string($property)]"/>
+               <if test="$use-parens">
+                       <text>(</text>
+               </if>
+               <apply-templates select="$property" mode="Vocab:render-property">
+                       <with-param name="root" select="$root"/>
+                       <with-param name="resource-context" select="$resource-context"/>
+               </apply-templates>
+               <choose>
+                       <when test="owl:someValuesFrom">
+                               <text> some </text>
+                               <apply-templates select="(owl:someValuesFrom/@rdf:resource|owl:someValuesFrom/*)[1]" mode="Vocab:render-class">
+                                       <with-param name="root" select="$root"/>
+                                       <with-param name="resource-context" select="$resource-context"/>
+                                       <with-param name="use-parens" select="true()"/>
+                               </apply-templates>
+                       </when>
+                       <when test="owl:allValuesFrom">
+                               <text> only </text>
+                               <apply-templates select="(owl:allValuesFrom/@rdf:resource|owl:allValuesFrom/*)[1]" mode="Vocab:render-class">
+                                       <with-param name="root" select="$root"/>
+                                       <with-param name="resource-context" select="$resource-context"/>
+                                       <with-param name="use-parens" select="true()"/>
+                               </apply-templates>
+                       </when>
+                       <when test="owl:hasValue">
+                               <text> value </text>
+                               <choose>
+                                       <when test="$is-on-datatype-property">
+                                               <apply-templates select="owl:hasValue[1]" mode="Vocab:render-value">
+                                                       <with-param name="root" select="$root"/>
+                                                       <with-param name="resource-context" select="$resource-context"/>
+                                               </apply-templates>
+                                       </when>
+                                       <otherwise>
+                                               <apply-templates select="owl:hasValue/@rdf:resource" mode="Vocab:render-individual">
+                                                       <with-param name="root" select="$root"/>
+                                                       <with-param name="resource-context" select="$resource-context"/>
+                                               </apply-templates>
+                                       </otherwise>
+                               </choose>
+                       </when>
+                       <when test="owl:hasSelf">
+                               <text> Self</text>
+                       </when>
+                       <when test="owl:minCardinality|owl:minQualifiedCardinality">
+                               <text> min </text>
+                               <value-of select="owl:minCardinality|owl:minQualifiedCardinality"/>
+                       </when>
+                       <when test="owl:maxCardinality|owl:maxQualifiedCardinality">
+                               <text> max </text>
+                               <value-of select="owl:maxCardinality|owl:maxQualifiedCardinality"/>
+                       </when>
+                       <when test="owl:cardinality|owl:qualifiedCardinality">
+                               <text> exactly </text>
+                               <value-of select="owl:cardinality|owl:qualifiedCardinality"/>
+                       </when>
+                       <otherwise>
+                               <text>??</text>
+                       </otherwise>
+               </choose>
+               <if test="owl:onClass">
+                       <text> </text>
+                       <apply-templates select="(owl:onClass/@rdf:resource|owl:onClass/*)[1]" mode="Vocab:render-class">
+                               <with-param name="root" select="$root"/>
+                               <with-param name="resource-context" select="$resource-context"/>
+                               <with-param name="use-parens" select="true()"/>
+                       </apply-templates>
+               </if>
+               <if test="owl:onDataRange">
+                       <text> </text>
+                       <apply-templates select="(owl:onDataRange/@rdf:resource|owl:onDataRange/*)[1]" mode="Vocab:render-class">
+                               <with-param name="root" select="$root"/>
+                               <with-param name="resource-context" select="$resource-context"/>
+                               <with-param name="use-parens" select="true()"/>
+                       </apply-templates>
+               </if>
+               <if test="$use-parens">
+                       <text>)</text>
+               </if>
+               <apply-templates select="Vocabvocab:inferred-from" mode="Vocab:render-class">
+                       <with-param name="root" select="$root"/>
+                       <with-param name="resource-context" select="$resource-context"/>
+               </apply-templates>
+       </template>
+       <template match="rdf:Description" mode="Vocab:render-class">
+               <param name="root" select="/"/>
+               <param name="resource-context"/>
+               <choose>
+                       <when test="@rdf:about">
+                               <apply-templates select="@rdf:about" mode="Vocab:render-class">
+                                       <with-param name="root" select="$root"/>
+                                       <with-param name="resource-context" select="$resource-context"/>
+                               </apply-templates>
+                       </when>
+                       <otherwise>
+                               <text>??</text>
+                       </otherwise>
+               </choose>
+               <apply-templates select="Vocabvocab:inferred-from" mode="Vocab:render-class">
+                       <with-param name="root" select="$root"/>
+                       <with-param name="resource-context" select="$resource-context"/>
+               </apply-templates>
+       </template>
+       <template match="Vocabvocab:inferred-from" mode="Vocab:render-class">
+               <param name="root" select="/"/>
+               <param name="resource-context"/>
+               <if test="string($resource-context)='' or string(@rdf:resource)!=$resource-context">
+                       <text> </text>
+                       <element name="html:details">
+                               <attribute name="class">
+                                       <text>inference</text>
+                               </attribute>
+                               <element name="html:summary">
+                                       <call-template name="Vocab:more-info"/>
+                               </element>
+                               <element name="html:div">
+                                       <element name="html:span">
+                                               &en;
+                                               <text>implied by</text>
+                                       </element>
+                                       <text> </text>
+                                       <apply-templates select="@rdf:resource" mode="Vocab:render-class">
+                                               <with-param name="root" select="$root"/>
+                                       </apply-templates>
+                               </element>
+                       </element>
+               </if>
+       </template>
+       <template match="@rdf:about|@rdf:resource" mode="Vocab:render-class">
+               <param name="root" select="/"/>
+               <variable name="resource" select="string()"/>
+               <for-each select="$root">
+                       <call-template name="Vocab:link-to">
+                               <with-param name="resource" select="$resource"/>
+                               <with-param name="kind" select="'class'"/>
+                       </call-template>
+               </for-each>
+       </template>
+       <template match="*" mode="Vocab:render-class">
+               <text>??</text>
+       </template>
+       <template match="rdf:Description" mode="Vocab:render-individual">
+               <param name="root" select="/"/>
+               <param name="resource-context"/>
+               <choose>
+                       <when test="@rdf:about">
+                               <apply-templates select="@rdf:about" mode="Vocab:render-individual">
+                                       <with-param name="root" select="$root"/>
+                                       <with-param name="resource-context" select="$resource-context"/>
+                               </apply-templates>
+                       </when>
+                       <otherwise>
+                               <text>??</text>
+                       </otherwise>
+               </choose>
+               <apply-templates select="Vocabvocab:inferred-from" mode="Vocab:render-individual">
+                       <with-param name="root" select="$root"/>
+                       <with-param name="resource-context" select="$resource-context"/>
+               </apply-templates>
+       </template>
+       <template match="Vocabvocab:inferred-from" mode="Vocab:render-individual">
+               <param name="root" select="/"/>
+               <param name="resource-context"/>
+               <if test="string($resource-context)='' or string(@rdf:resource)!=$resource-context">
+                       <text> </text>
+                       <element name="html:details">
+                               <attribute name="class">
+                                       <text>inference</text>
+                               </attribute>
+                               <element name="html:summary">
+                                       <call-template name="Vocab:more-info"/>
+                               </element>
+                               <element name="html:div">
+                                       <element name="html:span">
+                                               &en;
+                                               <text>implied by</text>
+                                       </element>
+                                       <text> </text>
+                                       <apply-templates select="@rdf:resource" mode="Vocab:render-individual">
+                                               <with-param name="root" select="$root"/>
+                                       </apply-templates>
+                               </element>
+                       </element>
+               </if>
+       </template>
+       <template match="@rdf:about|@rdf:resource" mode="Vocab:render-individual">
+               <param name="root" select="/"/>
+               <variable name="resource" select="string()"/>
+               <for-each select="$root">
+                       <call-template name="Vocab:link-to">
+                               <with-param name="resource" select="$resource"/>
+                               <with-param name="kind" select="'individual'"/>
+                       </call-template>
+               </for-each>
+       </template>
+       <template match="*" mode="Vocab:render-individual">
+               <text>??</text>
+       </template>
+       <template match="owl:AnnotationProperty|owl:DatatypeProperty|rdf:Description" mode="Vocab:render-property">
+               <param name="root" select="/"/>
+               <param name="resource-context"/>
+               <choose>
+                       <when test="@rdf:about">
+                               <apply-templates select="@rdf:about" mode="Vocab:render-property">
+                                       <with-param name="root" select="$root"/>
+                                       <with-param name="resource-context" select="$resource-context"/>
+                               </apply-templates>
+                       </when>
+                       <otherwise>
+                               <text>??</text>
+                       </otherwise>
+               </choose>
+               <apply-templates select="Vocabvocab:inferred-from" mode="Vocab:render-property">
+                       <with-param name="root" select="$root"/>
+                       <with-param name="resource-context" select="$resource-context"/>
+               </apply-templates>
+       </template>
+       <template match="owl:ObjectProperty" mode="Vocab:render-property">
+               <param name="root" select="/"/>
+               <param name="resource-context"/>
+               <choose>
+                       <when test="@rdf:about">
+                               <apply-templates select="@rdf:about" mode="Vocab:render-property">
+                                       <with-param name="root" select="$root"/>
+                                       <with-param name="resource-context" select="$resource-context"/>
+                               </apply-templates>
+                       </when>
+                       <when test="owl:inverseOf">
+                               <text>inverse </text>
+                               <apply-templates select="(owl:inverseOf/@rdf:resource|owl:inverseOf/*)[1]" mode="Vocab:render-property">
+                                       <with-param name="root" select="$root"/>
+                                       <with-param name="resource-context" select="$resource-context"/>
+                               </apply-templates>
+                       </when>
+                       <otherwise>
+                               <text>??</text>
+                       </otherwise>
+               </choose>
+               <apply-templates select="Vocabvocab:inferred-from" mode="Vocab:render-property">
+                       <with-param name="root" select="$root"/>
+                       <with-param name="resource-context" select="$resource-context"/>
+               </apply-templates>
+       </template>
+       <template match="Vocabvocab:inferred-from" mode="Vocab:render-property">
+               <param name="root" select="/"/>
+               <param name="resource-context"/>
+               <if test="string($resource-context)='' or string(@rdf:resource)!=$resource-context">
+                       <text> </text>
+                       <element name="html:details">
+                               <attribute name="class">
+                                       <text>inference</text>
+                               </attribute>
+                               <element name="html:summary">
+                                       <call-template name="Vocab:more-info"/>
+                               </element>
+                               <element name="html:div">
+                                       <element name="html:span">
+                                               &en;
+                                               <text>implied by</text>
+                                       </element>
+                                       <text> </text>
+                                       <apply-templates select="@rdf:resource" mode="Vocab:render-property">
+                                               <with-param name="root" select="$root"/>
+                                       </apply-templates>
+                               </element>
+                       </element>
+               </if>
+       </template>
+       <template match="@rdf:about|@rdf:resource" mode="Vocab:render-property">
+               <param name="root" select="/"/>
+               <variable name="resource" select="string()"/>
+               <for-each select="$root">
+                       <call-template name="Vocab:link-to">
+                               <with-param name="resource" select="$resource"/>
+                               <with-param name="kind" select="'property'"/>
+                       </call-template>
+               </for-each>
+       </template>
+       <template match="*" mode="Vocab:render-property">
+               <text>??</text>
+       </template>
+       <template match="*" mode="Vocab:render-value">
+               <param name="root" select="/"/>
+               <element name="html:code">
+                       <text>&quot;</text>
+                       <element name="html:span">
+                               <if test="string(@xml:lang)!=''">
+                                       <attribute name="lang">
+                                               <value-of select="@xml:lang"/>
+                                       </attribute>
+                                       <attribute name="xml:lang">
+                                               <value-of select="@xml:lang"/>
+                                       </attribute>
+                               </if>
+                               <value-of select="."/>
+                       </element>
+                       <text>&quot;</text>
+                       <choose>
+                               <when test="string(@xml:lang)!=''">
+                                       <text>@</text>
+                                       <value-of select="@xml:lang"/>
+                               </when>
+                               <when test="@rdf:datatype and string(@rdf:datatype)!='http://www.w3.org/2001/XMLSchema#string'">
+                                       <text>^^</text>
+                                       <for-each select="/">
+                                               <call-template name="Vocab:link-to">
+                                                       <with-param name="resource" select="@rdf:datatype"/>
+                                                       <with-param name="kind" select="'class'"/>
+                                               </call-template>
+                                       </for-each>
+                               </when>
+                       </choose>
+               </element>
+       </template>
+</transform>
diff --git a/transforms/site/terms.xslt b/transforms/site/terms.xslt
new file mode 100644 (file)
index 0000000..1f486fb
--- /dev/null
@@ -0,0 +1,1108 @@
+<?xml version="1.0"?>
+<!--
+SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
+SPDX-License-Identifier: MPL-2.0
+-->
+<!--
+© 2024 Lady [@ Ladys Computer].
+
+This Source Code Form is subject to the terms of the Mozilla Public License, v 2.0.
+If a copy of the M·P·L was not distributed with this file, You can obtain one at <https://mozilla.org/MPL/2.0/>.
+-->
+<!DOCTYPE transform [
+       <!ENTITY en '<attribute xmlns="http://www.w3.org/1999/XSL/Transform" name="lang"><text>en</text></attribute><attribute xmlns="http://www.w3.org/1999/XSL/Transform" name="xml:lang"><text>en</text></attribute>'>
+]>
+<transform
+       xmlns="http://www.w3.org/1999/XSL/Transform"
+       xmlns:Vocab="urn:fdc:vocab.ladys.computer:20240731:ns"
+       xmlns:Vocabvocab="urn:fdc:vocab.ladys.computer:20240731:vocab:"
+       xmlns:anno="http://www.w3.org/ns/oa#"
+       xmlns:html="http://www.w3.org/1999/xhtml"
+       xmlns:owl="http://www.w3.org/2002/07/owl#"
+       xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+       xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
+       xmlns:shacl="http://www.w3.org/ns/shacl#"
+       xmlns:skos="http://www.w3.org/2004/02/skos/core#"
+       xmlns:vocabstatus="http://www.w3.org/2003/06/sw-vocab-status/ns#"
+       xmlns:书社="urn:fdc:ladys.computer:20231231:Shu1She4"
+       exclude-result-prefixes="Vocab Vocabvocab"
+       version="1.0"
+>
+       <书社:id>urn:fdc:vocab.ladys.computer:20240731:transforms:site:terms.xslt</书社:id>
+       <key name="Vocab:named-class" match="owl:Class|rdfs:Datatype" use="@rdf:about"/>
+       <key name="Vocab:named-property" match="owl:AnnotationProperty|owl:DatatypeProperty|owl:ObjectProperty" use="@rdf:about"/>
+       <key name="Vocab:named-individual" match="owl:NamedIndividual" use="@rdf:about|owl:sameAs/@rdf:resource"/>
+       <key name="Vocab:subclass" match="owl:Class|owl:Restriction" use="rdfs:subClassOf/@rdf:resource"/>
+       <key name="Vocab:subproperty" match="owl:AnnotationProperty|owl:DatatypeProperty|owl:ObjectProperty" use="rdfs:subPropertyOf/@rdf:resource"/>
+       <template name="Vocab:base">
+               <value-of select="//rdf:RDF//owl:Ontology/shacl:declare/shacl:namespace[preceding-sibling::shacl:prefix='']"/>
+       </template>
+       <template name="Vocab:link-to">
+               <param name="resource"/>
+               <param name="kind" select="'individual'"/>
+               <param name="full" select="true()"/>
+               <variable name="base-prefix">
+                       <call-template name="Vocab:prefix">
+                               <with-param name="unprefixed">
+                                       <call-template name="Vocab:base"/>
+                               </with-param>
+                       </call-template>
+               </variable>
+               <variable name="curie">
+                       <call-template name="Vocab:prefix">
+                               <with-param name="unprefixed" select="string($resource)"/>
+                       </call-template>
+               </variable>
+               <variable name="localid">
+                       <choose>
+                               <when test="starts-with($curie, $base-prefix)">
+                                       <value-of select="substring-after($curie, $base-prefix)"/>
+                               </when>
+                               <otherwise>
+                                       <value-of select="$curie"/>
+                               </otherwise>
+                       </choose>
+               </variable>
+               <element name="html:a">
+                       <choose>
+                               <when test="key(concat('Vocab:named-', $kind), $resource)">
+                                       <attribute name="data-curie">
+                                               <value-of select="$curie"/>
+                                       </attribute>
+                                       <attribute name="data-kind">
+                                               <value-of select="$kind"/>
+                                       </attribute>
+                                       <attribute name="href">
+                                               <text>/terms/</text>
+                                               <choose>
+                                                       <when test="$kind='class'">
+                                                               <text>classes/</text>
+                                                       </when>
+                                                       <when test="$kind='property'">
+                                                               <text>properties/</text>
+                                                       </when>
+                                                       <otherwise>
+                                                               <text>individuals/</text>
+                                                       </otherwise>
+                                               </choose>
+                                               <value-of select="$localid"/>
+                                               <text>.xhtml</text>
+                                       </attribute>
+                                       <for-each select="key(concat('Vocab:named-', $kind), $resource)[1]">
+                                               <if test="not($full)">
+                                                       <attribute name="title">
+                                                               <value-of select="rdfs:label[1]"/>
+                                                               <text>(</text>
+                                                               <value-of select="$curie"/>
+                                                               <text>)</text>
+                                                       </attribute>
+                                               </if>
+                                               <variable name="wrappername">
+                                                       <choose>
+                                                               <when test="substring($localid, 1, 1)='(' and substring($localid, string-length($localid), 1)=')'">
+                                                                       <text>cite</text>
+                                                               </when>
+                                                               <otherwise>
+                                                                       <text>span</text>
+                                                               </otherwise>
+                                                       </choose>
+                                               </variable>
+                                               <element name="html:{$wrappername}">
+                                                       <attribute name="lang">
+                                                               <value-of select="rdfs:label[1]/@xml:lang"/>
+                                                       </attribute>
+                                                       <attribute name="xml:lang">
+                                                               <value-of select="rdfs:label[1]/@xml:lang"/>
+                                                       </attribute>
+                                                       <value-of select="rdfs:label[1]"/>
+                                               </element>
+                                               <if test="$full">
+                                                       <text> </text>
+                                                       <element name="html:small">
+                                                               <text>(</text>
+                                                               <element name="html:code">
+                                                                       <value-of select="$curie"/>
+                                                               </element>
+                                                               <text>)</text>
+                                                       </element>
+                                               </if>
+                                       </for-each>
+                               </when>
+                               <otherwise>
+                                       <attribute name="href">
+                                               <value-of select="$resource"/>
+                                       </attribute>
+                                       <element name="html:code">
+                                               <value-of select="$curie"/>
+                                       </element>
+                               </otherwise>
+                       </choose>
+               </element>
+       </template>
+       <template name="Vocab:list-all-terms">
+               <param name="source"/>
+               <call-template name="Vocab:list-terms">
+                       <with-param name="source" select="$source"/>
+                       <with-param name="selector" select="'Class'"/>
+               </call-template>
+               <call-template name="Vocab:list-terms">
+                       <with-param name="source" select="$source"/>
+                       <with-param name="selector" select="'Datatype'"/>
+               </call-template>
+               <call-template name="Vocab:list-terms">
+                       <with-param name="source" select="$source"/>
+                       <with-param name="selector" select="'AnnotationProperty'"/>
+               </call-template>
+               <call-template name="Vocab:list-terms">
+                       <with-param name="source" select="$source"/>
+                       <with-param name="selector" select="'ObjectProperty'"/>
+               </call-template>
+               <call-template name="Vocab:list-terms">
+                       <with-param name="source" select="$source"/>
+                       <with-param name="selector" select="'DatatypeProperty'"/>
+               </call-template>
+               <call-template name="Vocab:list-terms">
+                       <with-param name="source" select="$source"/>
+                       <with-param name="selector" select="'NamedIndividual'"/>
+               </call-template>
+       </template>
+       <template name="Vocab:list-terms">
+               <param name="source"/>
+               <param name="selector"/>
+               <variable name="base-iri">
+                       <call-template name="Vocab:base"/>
+               </variable>
+               <variable name="selection" select="//rdf:RDF//*[@rdf:about and local-name()=$selector and ($selector='Datatype' and namespace-uri()='http://www.w3.org/2000/01/rdf-schema#' or $selector!='Datatype' and namespace-uri()='http://www.w3.org/2002/07/owl#') and rdfs:isDefinedBy[starts-with(@rdf:resource, $base-iri)] and ($source='' and starts-with(@rdf:about, $base-iri) or (rdfs:isDefinedBy|rdfs:isDefinedBy/anno:ResourceSelection/anno:hasSource)[@rdf:resource=$source])]"/>
+               <if test="$selection">
+                       <element name="html:nav">
+                               <element name="html:h4">
+                                       &en;
+                                       <choose>
+                                               <when test="$selector='Class'">
+                                                       <text>Classes</text>
+                                               </when>
+                                               <when test="$selector='Datatype'">
+                                                       <text>Datatypes</text>
+                                               </when>
+                                               <when test="$selector='AnnotationProperty'">
+                                                       <text>Annotation Properties</text>
+                                               </when>
+                                               <when test="$selector='ObjectProperty'">
+                                                       <text>Object Properties</text>
+                                               </when>
+                                               <when test="$selector='DatatypeProperty'">
+                                                       <text>Data Properties</text>
+                                               </when>
+                                               <when test="$selector='NamedIndividual'">
+                                                       <text>Named Individuals</text>
+                                               </when>
+                                       </choose>
+                               </element>
+                               <element name="html:ul">
+                                       <for-each select="$selection">
+                                               <sort select="rdfs:label[1]" lang="en"/>
+                                               <element name="html:li">
+                                                       <call-template name="Vocab:link-to">
+                                                               <with-param name="resource" select="string(@rdf:about)"/>
+                                                               <with-param name="kind">
+                                                                       <choose>
+                                                                               <when test="$selector='Class' or $selector='Datatype'">
+                                                                                       <text>class</text>
+                                                                               </when>
+                                                                               <when test="$selector='AnnotationProperty' or $selector='ObjectProperty' or $selector='DatatypeProperty'">
+                                                                                       <text>property</text>
+                                                                               </when>
+                                                                               <otherwise>
+                                                                                       <text>individual</text>
+                                                                               </otherwise>
+                                                                       </choose>
+                                                               </with-param>
+                                                       </call-template>
+                                               </element>
+                                       </for-each>
+                               </element>
+                       </element>
+               </if>
+       </template>
+       <template name="Vocab:prefix">
+               <param name="unprefixed" select="''"/>
+               <variable name="namespace" select="//rdf:RDF//owl:Ontology/shacl:declare/shacl:namespace[starts-with($unprefixed, string()) and string(preceding-sibling::shacl:prefix)!=''][1]"/>
+               <choose>
+                       <when test="not($namespace)">
+                               <value-of select="$unprefixed"/>
+                       </when>
+                       <otherwise>
+                               <value-of select="$namespace/preceding-sibling::shacl:prefix"/>
+                               <text>:</text>
+                               <value-of select="substring-after($unprefixed, $namespace)"/>
+                       </otherwise>
+               </choose>
+       </template>
+       <template match="/书社:archive">
+               <variable name="base-iri">
+                       <call-template name="Vocab:base"/>
+               </variable>
+               <copy>
+                       <apply-templates select="@*"/>
+                       <apply-templates select="*[@书社:archived-as]"/>
+                       <for-each select="rdf:RDF//*[(self::owl:AnnotationProperty or self::owl:Class or self::owl:DatatypeProperty or self::owl:NamedIndividual or self::owl:ObjectProperty or self::rdfs:Datatype) and rdfs:isDefinedBy[starts-with(@rdf:resource, $base-iri)]]">
+                               <element name="html:article">
+                                       <attribute name="class">
+                                               <text>term</text>
+                                       </attribute>
+                                       <attribute name="书社:archived-as">
+                                               <value-of select="translate(substring-after(rdfs:isDefinedBy[starts-with(@rdf:resource, $base-iri)]/@rdf:resource, $base-iri), ':[]', '¦__')"/>
+                                       </attribute>
+                                       <element name="html:header">
+                                               <element name="html:a">
+                                                       <attribute name="href">
+                                                               <text>/</text>
+                                                       </attribute>
+                                                       <text>Ladys Vocabulary</text>
+                                               </element>
+                                       </element>
+                                       <apply-templates select="." mode="Vocab:render-term"/>
+                               </element>
+                       </for-each>
+               </copy>
+       </template>
+       <template match="html:article[rdf:RDF]">
+               <for-each select="rdf:RDF">
+                       <for-each select="//owl:Ontology[1]">
+                               <element name="html:hgroup">
+                                       <element name="html:h1">
+                                               <attribute name="lang">
+                                                       <value-of select="rdfs:label[1]/@xml:lang"/>
+                                               </attribute>
+                                               <attribute name="xml:lang">
+                                                       <value-of select="rdfs:label[1]/@xml:lang"/>
+                                               </attribute>
+                                               <value-of select="rdfs:label[1]"/>
+                                       </element>
+                                       <element name="html:p">
+                                               <text>An ontology.</text>
+                                       </element>
+                               </element>
+                               <element name="html:div">
+                                       <attribute name="class">
+                                               <text>owl</text>
+                                       </attribute>
+                                       <element name="html:dl">
+                                               <element name="html:div">
+                                                       <element name="html:dt">
+                                                               <element name="html:abbr">
+                                                                       &en;
+                                                                       <attribute name="title">
+                                                                               <text>Internationalized Resource Identifier</text>
+                                                                       </attribute>
+                                                                       <text>I·R·I</text>
+                                                               </element>
+                                                       </element>
+                                                       <element name="html:dd">
+                                                               <element name="html:a">
+                                                                       <attribute name="href">
+                                                                               <value-of select="@rdf:about"/>
+                                                                       </attribute>
+                                                                       <element name="html:code">
+                                                                               <value-of select="@rdf:about"/>
+                                                                       </element>
+                                                               </element>
+                                                       </element>
+                                               </element>
+                                       </element>
+                               </element>
+                               <apply-templates select="rdfs:comment[1]/html:div" mode="Vocab:render-term"/>
+                               <element name="html:section">
+                                       <element name="html:h2">
+                                               &en;
+                                               <text>List of Name·spaces</text>
+                                       </element>
+                                       <element name="html:table">
+                                               <element name="html:thead">
+                                                       <element name="html:tr">
+                                                               <element name="html:th">
+                                                                       &en;
+                                                                       <attribute name="scope">
+                                                                               <text>col</text>
+                                                                       </attribute>
+                                                                       Prefix
+                                                               </element>
+                                                               <element name="html:th">
+                                                                       &en;
+                                                                       <attribute name="scope">
+                                                                               <text>col</text>
+                                                                       </attribute>
+                                                                       Name·space I·R·I
+                                                               </element>
+                                                       </element>
+                                               </element>
+                                               <element name="html:tbody">
+                                                       <for-each select="shacl:declare[shacl:prefix!='']">
+                                                               <sort select="shacl:prefix"/>
+                                                               <element name="html:tr">
+                                                                       <element name="html:th">
+                                                                               <attribute name="scope">
+                                                                                       <text>row</text>
+                                                                               </attribute>
+                                                                               <element name="html:code">
+                                                                                       <value-of select="shacl:prefix"/>
+                                                                                       <text>:</text>
+                                                                               </element>
+                                                                       </element>
+                                                                       <element name="html:td">
+                                                                               <element name="html:code">
+                                                                                       <value-of select="shacl:namespace"/>
+                                                                               </element>
+                                                                       </element>
+                                                               </element>
+                                                       </for-each>
+                                               </element>
+                                       </element>
+                               </element>
+                               <element name="html:section">
+                                       <element name="html:h2">
+                                               &en;
+                                               <text>Terms Defined By </text>
+                                               <element name="html:cite">
+                                                       <attribute name="lang">
+                                                               <value-of select="rdfs:label[1]/@xml:lang"/>
+                                                       </attribute>
+                                                       <attribute name="xml:lang">
+                                                               <value-of select="rdfs:label[1]/@xml:lang"/>
+                                                       </attribute>
+                                                       <value-of select="rdfs:label[1]"/>
+                                               </element>
+                                       </element>
+                                       <call-template name="Vocab:list-all-terms"/>
+                               </element>
+                       </for-each>
+                       <element name="html:section">
+                               <element name="html:h2">
+                                       &en;
+                                       <text>Terms Defined Else·where</text>
+                               </element>
+                               <for-each select="//owl:NamedIndividual">
+                                       <sort select="rdfs:label" lang="en"/>
+                                       <if test="(//rdfs:isDefinedBy|//rdfs:isDefinedBy/anno:ResourceSelection/anno:hasSource)[string(@rdf:resource)=string(current()/@rdf:about)]">
+                                               <element name="html:section">
+                                                       <element name="html:h3">
+                                                               <element name="html:a">
+                                                                       <attribute name="href">
+                                                                               <value-of select="@rdf:about"/>
+                                                                       </attribute>
+                                                                       <element name="html:cite">
+                                                                               <attribute name="lang">
+                                                                                       <value-of select="rdfs:label[1]/@xml:lang"/>
+                                                                               </attribute>
+                                                                               <attribute name="xml:lang">
+                                                                                       <value-of select="rdfs:label[1]/@xml:lang"/>
+                                                                               </attribute>
+                                                                               <value-of select="rdfs:label[1]"/>
+                                                                       </element>
+                                                               </element>
+                                                       </element>
+                                                       <apply-templates select="rdfs:comment[1]/html:div" mode="Vocab:render-term"/>
+                                                       <call-template name="Vocab:list-all-terms">
+                                                               <with-param name="source" select="@rdf:about"/>
+                                                       </call-template>
+                                               </element>
+                                       </if>
+                               </for-each>
+                       </element>
+               </for-each>
+       </template>
+       <template match="*[@rdf:about and (self::owl:AnnotationProperty or self::owl:Class or self::owl:DatatypeProperty or self::owl:NamedIndividual or self::owl:ObjectProperty or self::rdfs:Datatype)]" mode="Vocab:render-term" priority="2">
+               <variable name="root" select="/"/>
+               <variable name="base-iri">
+                       <call-template name="Vocab:base"/>
+               </variable>
+               <variable name="kind">
+                       <choose>
+                               <when test="self::owl:Class or self::rdfs:Datatype">
+                                       <text>class</text>
+                               </when>
+                               <when test="self::owl:AnnotationProperty or self::owl:ObjectProperty or self::owl:DatatypeProperty">
+                                       <text>property</text>
+                               </when>
+                               <otherwise>
+                                       <text>individual</text>
+                               </otherwise>
+                       </choose>
+               </variable>
+               <variable name="resource-context" select="string(@rdf:about)"/>
+               <variable name="equivalencies" select="Vocab:get-equivalents(., $kind)"/>
+               <variable name="supers" select="Vocab:get-transitives(., $kind, 'super')"/>
+               <variable name="inverses" select="Vocab:get-symmetrics(., $kind, 'inverse')"/>
+               <variable name="disjoints" select="Vocab:get-transitives(.|$supers, $kind, 'disjoint')"/>
+               <element name="html:meta">
+                       <attribute name="itemprop">
+                               <text>urn:fdc:ladys.computer:20231231:Shu1She4:title</text>
+                       </attribute>
+                       <attribute name="content">
+                               <value-of select="rdfs:label[1]"/>
+                               <text> (</text>
+                               <call-template name="Vocab:prefix">
+                                       <with-param name="unprefixed">
+                                               <value-of select="@rdf:about"/>
+                                       </with-param>
+                               </call-template>
+                               <text>)</text>
+                               <text> | </text>
+                               <value-of select="//rdf:RDF//owl:Ontology/rdfs:label"/>
+                       </attribute>
+               </element>
+               <element name="html:hgroup">
+                       <element name="html:h1">
+                               <attribute name="lang">
+                                       <value-of select="rdfs:label[1]/@xml:lang"/>
+                               </attribute>
+                               <attribute name="xml:lang">
+                                       <value-of select="rdfs:label[1]/@xml:lang"/>
+                               </attribute>
+                               <value-of select="rdfs:label[1]"/>
+                       </element>
+                       <element name="html:p">
+                               <text>(</text>
+                               <element name="html:code">
+                                       <call-template name="Vocab:prefix">
+                                               <with-param name="unprefixed" select="@rdf:about"/>
+                                       </call-template>
+                               </element>
+                               <text>)</text>
+                       </element>
+                       <element name="html:p">
+                               <choose>
+                                       <when test="self::owl:Class">
+                                               <text>A class.</text>
+                                       </when>
+                                       <when test="self::rdfs:Datatype">
+                                               <text>A datatype.</text>
+                                       </when>
+                                       <when test="self::owl:AnnotationProperty">
+                                               <text>An annotation property.</text>
+                                       </when>
+                                       <when test="self::owl:ObjectProperty">
+                                               <text>An object property.</text>
+                                       </when>
+                                       <when test="self::owl:DatatypeProperty">
+                                               <text>A data property.</text>
+                                       </when>
+                                       <when test="self::owl:NamedIndividual">
+                                               <text>A named individual.</text>
+                                       </when>
+                               </choose>
+                       </element>
+               </element>
+               <element name="html:div">
+                       <attribute name="class">
+                               <text>owl</text>
+                       </attribute>
+                       <if test="self::owl:DatatypeProperty|self::owl:ObjectProperty">
+                               <element name="html:table">
+                                       <element name="html:tbody">
+                                               <element name="html:tr">
+                                                       <element name="html:td">
+                                                               <element name="html:label">
+                                                                       &en;
+                                                                       <text>Functional? </text>
+                                                                       <element name="html:input">
+                                                                               <attribute name="type">
+                                                                                       <text>checkbox</text>
+                                                                               </attribute>
+                                                                               <attribute name="aria-readonly">
+                                                                                       <text>true</text>
+                                                                               </attribute>
+                                                                               <attribute name="onclick">
+                                                                                       <text>return false</text>
+                                                                               </attribute>
+                                                                               <if test="rdf:type/@rdf:resource[string()='http://www.w3.org/2002/07/owl#FunctionalProperty']">
+                                                                                       <attribute name="checked">
+                                                                                               <text>checked</text>
+                                                                                       </attribute>
+                                                                               </if>
+                                                                       </element>
+                                                               </element>
+                                                       </element>
+                                                       <if test="self::owl:ObjectProperty">
+                                                               <element name="html:td">
+                                                                       <element name="html:label">
+                                                                               &en;
+                                                                               <text>Inverse Functional? </text>
+                                                                               <element name="html:input">
+                                                                                       <attribute name="type">
+                                                                                               <text>checkbox</text>
+                                                                                       </attribute>
+                                                                                       <attribute name="aria-readonly">
+                                                                                               <text>true</text>
+                                                                                       </attribute>
+                                                                                       <attribute name="onclick">
+                                                                                               <text>return false</text>
+                                                                                       </attribute>
+                                                                                       <if test="rdf:type/@rdf:resource[string()='http://www.w3.org/2002/07/owl#InverseFunctionalProperty']">
+                                                                                               <attribute name="checked">
+                                                                                                       <text>checked</text>
+                                                                                               </attribute>
+                                                                                       </if>
+                                                                               </element>
+                                                                       </element>
+                                                               </element>
+                                                               <element name="html:td">
+                                                                       <element name="html:label">
+                                                                               &en;
+                                                                               <text>Reflexive? </text>
+                                                                               <element name="html:input">
+                                                                                       <attribute name="type">
+                                                                                               <text>checkbox</text>
+                                                                                       </attribute>
+                                                                                       <attribute name="aria-readonly">
+                                                                                               <text>true</text>
+                                                                                       </attribute>
+                                                                                       <attribute name="onclick">
+                                                                                               <text>return false</text>
+                                                                                       </attribute>
+                                                                                       <if test="rdf:type/@rdf:resource[string()='http://www.w3.org/2002/07/owl#ReflexiveProperty']">
+                                                                                               <attribute name="checked">
+                                                                                                       <text>checked</text>
+                                                                                               </attribute>
+                                                                                       </if>
+                                                                               </element>
+                                                                       </element>
+                                                               </element>
+                                                               <element name="html:td">
+                                                                       <element name="html:label">
+                                                                               &en;
+                                                                               <text>Irreflexive? </text>
+                                                                               <element name="html:input">
+                                                                                       <attribute name="type">
+                                                                                               <text>checkbox</text>
+                                                                                       </attribute>
+                                                                                       <attribute name="aria-readonly">
+                                                                                               <text>true</text>
+                                                                                       </attribute>
+                                                                                       <attribute name="onclick">
+                                                                                               <text>return false</text>
+                                                                                       </attribute>
+                                                                                       <if test="rdf:type/@rdf:resource[string()='http://www.w3.org/2002/07/owl#IrreflexiveProperty']">
+                                                                                               <attribute name="checked">
+                                                                                                       <text>checked</text>
+                                                                                               </attribute>
+                                                                                       </if>
+                                                                               </element>
+                                                                       </element>
+                                                               </element>
+                                                               <element name="html:td">
+                                                                       <element name="html:label">
+                                                                               &en;
+                                                                               <text>Symmetric? </text>
+                                                                               <element name="html:input">
+                                                                                       <attribute name="type">
+                                                                                               <text>checkbox</text>
+                                                                                       </attribute>
+                                                                                       <attribute name="aria-readonly">
+                                                                                               <text>true</text>
+                                                                                       </attribute>
+                                                                                       <attribute name="onclick">
+                                                                                               <text>return false</text>
+                                                                                       </attribute>
+                                                                                       <if test="rdf:type/@rdf:resource[string()='http://www.w3.org/2002/07/owl#SymmetricProperty']">
+                                                                                               <attribute name="checked">
+                                                                                                       <text>checked</text>
+                                                                                               </attribute>
+                                                                                       </if>
+                                                                               </element>
+                                                                       </element>
+                                                               </element>
+                                                               <element name="html:td">
+                                                                       <element name="html:label">
+                                                                               &en;
+                                                                               <text>Asymmetric? </text>
+                                                                               <element name="html:input">
+                                                                                       <attribute name="type">
+                                                                                               <text>checkbox</text>
+                                                                                       </attribute>
+                                                                                       <attribute name="aria-readonly">
+                                                                                               <text>true</text>
+                                                                                       </attribute>
+                                                                                       <attribute name="onclick">
+                                                                                               <text>return false</text>
+                                                                                       </attribute>
+                                                                                       <if test="rdf:type/@rdf:resource[string()='http://www.w3.org/2002/07/owl#AsymmetricProperty']">
+                                                                                               <attribute name="checked">
+                                                                                                       <text>checked</text>
+                                                                                               </attribute>
+                                                                                       </if>
+                                                                               </element>
+                                                                       </element>
+                                                               </element>
+                                                               <element name="html:td">
+                                                                       <element name="html:label">
+                                                                               &en;
+                                                                               <text>Transitive? </text>
+                                                                               <element name="html:input">
+                                                                                       <attribute name="type">
+                                                                                               <text>checkbox</text>
+                                                                                       </attribute>
+                                                                                       <attribute name="aria-readonly">
+                                                                                               <text>true</text>
+                                                                                       </attribute>
+                                                                                       <attribute name="onclick">
+                                                                                               <text>return false</text>
+                                                                                       </attribute>
+                                                                                       <if test="rdf:type/@rdf:resource[string()='http://www.w3.org/2002/07/owl#TransitiveProperty']">
+                                                                                               <attribute name="checked">
+                                                                                                       <text>checked</text>
+                                                                                               </attribute>
+                                                                                       </if>
+                                                                               </element>
+                                                                       </element>
+                                                               </element>
+                                                       </if>
+                                               </element>
+                                       </element>
+                               </element>
+                       </if>
+                       <element name="html:dl">
+                               <element name="html:div">
+                                       <element name="html:dt">
+                                               <element name="html:abbr">
+                                                       &en;
+                                                       <attribute name="title">
+                                                               <text>Internationalized Resource Identifier</text>
+                                                       </attribute>
+                                                       <text>I·R·I</text>
+                                               </element>
+                                       </element>
+                                       <element name="html:dd">
+                                               <element name="html:a">
+                                                       <attribute name="href">
+                                                               <value-of select="$resource-context"/>
+                                                       </attribute>
+                                                       <element name="html:code">
+                                                               <value-of select="$resource-context"/>
+                                                       </element>
+                                               </element>
+                                       </element>
+                               </element>
+                               <if test="self::owl:NamedIndividual and rdf:type">
+                                       <element name="html:div">
+                                               <element name="html:dt">
+                                                       &en;
+                                                       <text>Type</text>
+                                               </element>
+                                               <for-each select="rdf:type">
+                                                       <element name="html:dd">
+                                                               <apply-templates select="(@rdf:resource|*)[1]" mode="Vocab:render-class"/>
+                                                       </element>
+                                               </for-each>
+                                       </element>
+                               </if>
+                               <if test="$equivalencies">
+                                       <element name="html:div">
+                                               <choose>
+                                                       <when test="self::rdfs:Datatype">
+                                                               <element name="html:dt">
+                                                                       &en;
+                                                                       <text>Equivalent Data Range</text>
+                                                               </element>
+                                                               <for-each select="$equivalencies">
+                                                                       <element name="html:dd">
+                                                                               <apply-templates select="." mode="Vocab:render-class">
+                                                                                       <with-param name="root" select="$root"/>
+                                                                                       <with-param name="resource-context" select="$resource-context"/>
+                                                                               </apply-templates>
+                                                                       </element>
+                                                               </for-each>
+                                                       </when>
+                                                       <when test="self::owl:Class">
+                                                               <element name="html:dt">
+                                                                       &en;
+                                                                       <text>Equivalent Class</text>
+                                                               </element>
+                                                               <for-each select="$equivalencies">
+                                                                       <element name="html:dd">
+                                                                               <apply-templates select="." mode="Vocab:render-class">
+                                                                                       <with-param name="root" select="$root"/>
+                                                                                       <with-param name="resource-context" select="$resource-context"/>
+                                                                               </apply-templates>
+                                                                       </element>
+                                                               </for-each>
+                                                       </when>
+                                                       <when test="$kind='property'">
+                                                               <element name="html:dt">
+                                                                       &en;
+                                                                       <text>Equivalent Property</text>
+                                                               </element>
+                                                               <for-each select="$equivalencies">
+                                                                       <element name="html:dd">
+                                                                               <apply-templates select="." mode="Vocab:render-property">
+                                                                                       <with-param name="root" select="$root"/>
+                                                                                       <with-param name="resource-context" select="$resource-context"/>
+                                                                               </apply-templates>
+                                                                       </element>
+                                                               </for-each>
+                                                       </when>
+                                                       <otherwise>
+                                                               <element name="html:dt">
+                                                                       &en;
+                                                                       <text>Same As</text>
+                                                               </element>
+                                                               <for-each select="$equivalencies">
+                                                                       <element name="html:dd">
+                                                                               <apply-templates select="." mode="Vocab:render-individual">
+                                                                                       <with-param name="root" select="$root"/>
+                                                                                       <with-param name="resource-context" select="$resource-context"/>
+                                                                               </apply-templates>
+                                                                       </element>
+                                                               </for-each>
+                                                       </otherwise>
+                                               </choose>
+                                       </element>
+                               </if>
+                               <if test="$inverses">
+                                       <choose>
+                                               <when test="$kind='class'">
+                                                       <element name="html:div">
+                                                               <element name="html:dt">
+                                                                       &en;
+                                                                       <text>Complement Of</text>
+                                                               </element>
+                                                               <for-each select="$inverses">
+                                                                       <element name="html:dd">
+                                                                               <apply-templates select="." mode="Vocab:render-class">
+                                                                                       <with-param name="root" select="$root"/>
+                                                                                       <with-param name="resource-context" select="$resource-context"/>
+                                                                               </apply-templates>
+                                                                       </element>
+                                                               </for-each>
+                                                       </element>
+                                               </when>
+                                               <when test="$kind='property'">
+                                                       <element name="html:div">
+                                                               <element name="html:dt">
+                                                                       &en;
+                                                                       <text>Inverse Of</text>
+                                                               </element>
+                                                               <for-each select="$inverses">
+                                                                       <element name="html:dd">
+                                                                               <apply-templates select="." mode="Vocab:render-property">
+                                                                                       <with-param name="root" select="$root"/>
+                                                                                       <with-param name="resource-context" select="$resource-context"/>
+                                                                               </apply-templates>
+                                                                       </element>
+                                                               </for-each>
+                                                       </element>
+                                               </when>
+                                       </choose>
+                               </if>
+                               <if test="$supers">
+                                       <choose>
+                                               <when test="$kind='class'">
+                                                       <element name="html:div">
+                                                               <element name="html:dt">
+                                                                       &en;
+                                                                       <text>Subclass Of</text>
+                                                               </element>
+                                                               <for-each select="$supers">
+                                                                       <element name="html:dd">
+                                                                               <apply-templates select="." mode="Vocab:render-class">
+                                                                                       <with-param name="root" select="$root"/>
+                                                                                       <with-param name="resource-context" select="$resource-context"/>
+                                                                               </apply-templates>
+                                                                       </element>
+                                                               </for-each>
+                                                       </element>
+                                               </when>
+                                               <when test="$kind='property'">
+                                                       <element name="html:div">
+                                                               <element name="html:dt">
+                                                                       &en;
+                                                                       <text>Subproperty Of</text>
+                                                               </element>
+                                                               <for-each select="$supers">
+                                                                       <element name="html:dd">
+                                                                               <apply-templates select="." mode="Vocab:render-property">
+                                                                                       <with-param name="root" select="$root"/>
+                                                                                       <with-param name="resource-context" select="$resource-context"/>
+                                                                               </apply-templates>
+                                                                       </element>
+                                                               </for-each>
+                                                       </element>
+                                               </when>
+                                       </choose>
+                               </if>
+                               <if test="owl:hasKey">
+                                       <element name="html:div">
+                                               <element name="html:dt">
+                                                       &en;
+                                                       <text>Target For Key</text>
+                                               </element>
+                                               <for-each select="owl:hasKey">
+                                                       <element name="html:dd">
+                                                               <for-each select="*">
+                                                                       <apply-templates select="." mode="Vocab:render-property"/>
+                                                                       <if test="position()&lt;last()">
+                                                                               <text>, </text>
+                                                                       </if>
+                                                               </for-each>
+                                                       </element>
+                                               </for-each>
+                                       </element>
+                               </if>
+                               <if test="owl:propertyChainAxiom">
+                                       <element name="html:div">
+                                               <element name="html:dt">
+                                                       &en;
+                                                       <text>Property Chain</text>
+                                               </element>
+                                               <for-each select="owl:propertyChainAxiom">
+                                                       <element name="html:dd">
+                                                               <for-each select="*">
+                                                                       <apply-templates select="." mode="Vocab:render-property"/>
+                                                                       <if test="position()&lt;last()">
+                                                                               <text> o </text>
+                                                                       </if>
+                                                               </for-each>
+                                                       </element>
+                                               </for-each>
+                                       </element>
+                               </if>
+                               <if test="key('Vocab:subclass', @rdf:about)">
+                                       <element name="html:div">
+                                               <element name="html:dt">
+                                                       &en;
+                                                       <text>Superclass Of</text>
+                                               </element>
+                                               <for-each select="key('Vocab:subclass', @rdf:about)">
+                                                       <element name="html:dd">
+                                                               <apply-templates select="." mode="Vocab:render-class"/>
+                                                       </element>
+                                               </for-each>
+                                       </element>
+                               </if>
+                               <if test="key('Vocab:subproperty', @rdf:about)">
+                                       <element name="html:div">
+                                               <element name="html:dt">
+                                                       &en;
+                                                       <text>Superproperty Of</text>
+                                               </element>
+                                               <for-each select="key('Vocab:subproperty', @rdf:about)">
+                                                       <element name="html:dd">
+                                                               <apply-templates select="." mode="Vocab:render-property"/>
+                                                       </element>
+                                               </for-each>
+                                       </element>
+                               </if>
+                               <if test="rdfs:domain">
+                                       <element name="html:div">
+                                               <element name="html:dt">
+                                                       &en;
+                                                       <text>Domain</text>
+                                               </element>
+                                               <for-each select="rdfs:domain">
+                                                       <element name="html:dd">
+                                                               <apply-templates select="(@rdf:resource|*)[1]" mode="Vocab:render-class"/>
+                                                       </element>
+                                               </for-each>
+                                       </element>
+                               </if>
+                               <if test="rdfs:range">
+                                       <element name="html:div">
+                                               <element name="html:dt">
+                                                       &en;
+                                                       <text>Range</text>
+                                               </element>
+                                               <for-each select="rdfs:range">
+                                                       <element name="html:dd">
+                                                               <apply-templates select="(@rdf:resource|*)[1]" mode="Vocab:render-class"/>
+                                                       </element>
+                                               </for-each>
+                                       </element>
+                               </if>
+                               <if test="$disjoints">
+                                       <choose>
+                                               <when test="$kind='class'">
+                                                       <element name="html:div">
+                                                               <element name="html:dt">
+                                                                       &en;
+                                                                       <text>Disjoint With</text>
+                                                               </element>
+                                                               <for-each select="$disjoints">
+                                                                       <element name="html:dd">
+                                                                               <apply-templates select="." mode="Vocab:render-class">
+                                                                                       <with-param name="root" select="$root"/>
+                                                                                       <with-param name="resource-context" select="$resource-context"/>
+                                                                               </apply-templates>
+                                                                       </element>
+                                                               </for-each>
+                                                       </element>
+                                               </when>
+                                               <when test="$kind='property'">
+                                                       <element name="html:div">
+                                                               <element name="html:dt">
+                                                                       &en;
+                                                                       <text>Property Disjoint With</text>
+                                                               </element>
+                                                               <for-each select="$disjoints">
+                                                                       <element name="html:dd">
+                                                                               <apply-templates select="." mode="Vocab:render-property">
+                                                                                       <with-param name="root" select="$root"/>
+                                                                                       <with-param name="resource-context" select="$resource-context"/>
+                                                                               </apply-templates>
+                                                                       </element>
+                                                               </for-each>
+                                                       </element>
+                                               </when>
+                                       </choose>
+                               </if>
+                               <if test="skos:inScheme">
+                                       <element name="html:div">
+                                               <element name="html:dt">
+                                                       &en;
+                                                       <text>In Scheme</text>
+                                               </element>
+                                               <for-each select="skos:inScheme">
+                                                       <element name="html:dd">
+                                                               <call-template name="Vocab:link-to">
+                                                                       <with-param name="resource" select="string(@rdf:resource)"/>
+                                                                       <with-param name="kind" select="'individual'"/>
+                                                               </call-template>
+                                                       </element>
+                                               </for-each>
+                                       </element>
+                               </if>
+                               <if test="rdfs:isDefinedBy[not(starts-with(@rdf:resource, $base-iri))]">
+                                       <element name="html:div">
+                                               <element name="html:dt">
+                                                       &en;
+                                                       <text>Is Defined By</text>
+                                               </element>
+                                               <for-each select="rdfs:isDefinedBy[not(starts-with(@rdf:resource, $base-iri))]">
+                                                       <element name="html:dd">
+                                                               <choose>
+                                                                       <when test="@rdf:resource">
+                                                                               <call-template name="Vocab:link-to">
+                                                                                       <with-param name="resource" select="string(@rdf:resource)"/>
+                                                                                       <with-param name="kind" select="'individual'"/>
+                                                                               </call-template>
+                                                                       </when>
+                                                                       <when test="anno:ResourceSelection">
+                                                                               <variable name="base" select="string(anno:ResourceSelection/anno:hasSource/@rdf:resource)"/>
+                                                                               <element name="html:a">
+                                                                                       <attribute name="href">
+                                                                                               <choose>
+                                                                                                       <when test="not(anno:ResourceSelection/anno:hasSelector/anno:FragmentSelector)">
+                                                                                                               <value-of select="$base"/>
+                                                                                                       </when>
+                                                                                                       <when test="contains($base, '#')">
+                                                                                                               <value-of select="substring-before($base, '#')"/>
+                                                                                                       </when>
+                                                                                                       <otherwise>
+                                                                                                               <value-of select="$base"/>
+                                                                                                       </otherwise>
+                                                                                               </choose>
+                                                                                               <if test="anno:ResourceSelection/anno:hasSelector/anno:FragmentSelector">
+                                                                                                       <text>#</text>
+                                                                                                       <value-of select="anno:ResourceSelection/anno:hasSelector/anno:FragmentSelector/rdf:value"/>
+                                                                                               </if>
+                                                                                       </attribute>
+                                                                                       <choose>
+                                                                                               <when test="key('Vocab:named-individual', $base)">
+                                                                                                       <element name="html:cite">
+                                                                                                               <for-each select="key('Vocab:named-individual', $base)[1]">
+                                                                                                                       <attribute name="lang">
+                                                                                                                               <value-of select="rdfs:label[1]/@xml:lang"/>
+                                                                                                                       </attribute>
+                                                                                                                       <attribute name="xml:lang">
+                                                                                                                               <value-of select="rdfs:label[1]/@xml:lang"/>
+                                                                                                                       </attribute>
+                                                                                                                       <value-of select="rdfs:label[1]"/>
+                                                                                                               </for-each>
+                                                                                                       </element>
+                                                                                               </when>
+                                                                                               <otherwise>
+                                                                                                       <element name="html:code">
+                                                                                                               <value-of select="$base"/>
+                                                                                                       </element>
+                                                                                               </otherwise>
+                                                                                       </choose>
+                                                                                       <text> </text>
+                                                                                       <if test="anno:ResourceSelection/anno:hasSelector/anno:FragmentSelector">
+                                                                                               <element name="html:small">
+                                                                                                       <text>[</text>
+                                                                                                       <element name="html:code">
+                                                                                                               <text>#</text>
+                                                                                                               <value-of select="anno:ResourceSelection/anno:hasSelector/anno:FragmentSelector/rdf:value"/>
+                                                                                                       </element>
+                                                                                                       <text>]</text>
+                                                                                               </element>
+                                                                                       </if>
+                                                                               </element>
+                                                                       </when>
+                                                                       <otherwise>
+                                                                               <text>??</text>
+                                                                       </otherwise>
+                                                               </choose>
+                                                       </element>
+                                               </for-each>
+                                       </element>
+                               </if>
+                               <if test="vocabstatus:term_status">
+                                       <element name="html:div">
+                                               <element name="html:dt">
+                                                       &en;
+                                                       <text>Status</text>
+                                               </element>
+                                               <for-each select="vocabstatus:term_status">
+                                                       <element name="html:dd">
+                                                               <apply-templates select="." mode="Vocab:render-value"/>
+                                                       </element>
+                                               </for-each>
+                                       </element>
+                               </if>
+                       </element>
+               </element>
+               <apply-templates select="rdfs:comment[1]/html:div" mode="Vocab:render-term"/>
+               <if test="self::owl:NamedIndividual and (//rdfs:isDefinedBy|//rdfs:isDefinedBy/anno:ResourceSelection/anno:hasSource)[string(@rdf:resource)=string(current()/@rdf:about)]">
+                       <call-template name="Vocab:list-all-terms">
+                               <with-param name="source" select="@rdf:about"/>
+                       </call-template>
+               </if>
+       </template>
+       <template match="html:a[@data-curie[not(contains(., '/'))]]/@href" mode="Vocab:render-term" priority="2">
+               <variable name="base-prefix">
+                       <call-template name="Vocab:prefix">
+                               <with-param name="unprefixed">
+                                       <call-template name="Vocab:base"/>
+                               </with-param>
+                       </call-template>
+               </variable>
+               <attribute name="href">
+                       <text>/terms/</text>
+                       <choose>
+                               <when test="../@data-kind='class'">
+                                       <text>classes/</text>
+                               </when>
+                               <when test="../@data-kind='property'">
+                                       <text>properties/</text>
+                               </when>
+                               <otherwise>
+                                       <text>individuals/</text>
+                               </otherwise>
+                       </choose>
+                       <choose>
+                               <when test="starts-with(../@data-curie, $base-prefix)">
+                                       <value-of select="substring-after(../@data-curie, $base-prefix)"/>
+                               </when>
+                               <otherwise>
+                                       <value-of name="identifier" select="../@data-curie"/>
+                               </otherwise>
+                       </choose>
+                       <text>.xhtml</text>
+               </attribute>
+       </template>
+       <template match="@*|node()" mode="Vocab:render-term" priority="0">
+               <copy>
+                       <apply-templates select="@*|node()" mode="Vocab:render-term"/>
+               </copy>
+       </template>
+</transform>
This page took 0.948003 seconds and 4 git commands to generate.