Package: pykeen
PyKEENPyKEEN(PythonKnowlEdgeEmbeddiNgs) is a Python package designed to
    train and evaluate knowledge graph embedding models (incorporating multi-modal information).Installation•Quickstart•Datasets (37)•Inductive Datasets (5)•Models (40)•Support•CitationInstallationThe latest stable version of PyKEEN requires Python 3.8+. It can be downloaded
and installed fromPyPIwith:pipinstallpykeenThe latest version of PyKEEN can be installed directly from the
source code onGitHubwith:pipinstallgit+https://github.com/pykeen/pykeen.gitMore information about installation (e.g., development mode, Windows installation, Colab, Kaggle, extras)
can be found in theinstallation documentation.QuickstartThis example shows how to train a model on a dataset and test on another dataset.The fastest way to get up and running is to use the pipeline function. It
provides a high-level entry into the extensible functionality of this package.
The following example shows how to train and evaluate theTransEmodel on theNationsdataset. By default, the training loop uses thestochastic local closed world assumption (sLCWA)training approach and evaluates withrank-based evaluation.frompykeen.pipelineimportpipelineresult=pipeline(model='TransE',dataset='nations',)The results are returned in an instance of thePipelineResultdataclass that has attributes for the trained model, the training loop, the evaluation, and more. See the tutorials
onusing your own dataset,understanding the evaluation,
andmaking novel link predictions.PyKEEN is extensible such that:Each model has the same API, so anything frompykeen.modelscan be dropped inEach training loop has the same API, sopykeen.training.LCWATrainingLoopcan be dropped inTriples factories can be generated by the user withfrom pykeen.triples.TriplesFactoryThe full documentation can be found athttps://pykeen.readthedocs.io.ImplementationBelow are the models, datasets, training modes, evaluators, and metrics implemented
inpykeen.DatasetsThe following 37 datasets are built in to PyKEEN. The citation for each dataset corresponds to either the paper
describing the dataset, the first paper published using the dataset with knowledge graph embedding models,
or the URL for the dataset if neither of the first two are available. If you want to use a custom dataset,
see theBring Your Own Datasettutorial. If you
have a suggestion for another dataset to include in PyKEEN, please let us knowhere.NameDocumentationCitationEntitiesRelationsTriplesAristo-v4pykeen.datasets.AristoV4Chenet al., 2021420161593279425BioKGpykeen.datasets.BioKGWalshet al., 2019105524172067997Clinical Knowledge Graphpykeen.datasets.CKGSantoset al., 202076174191126691525CN3l Familypykeen.datasets.CN3lChenet al., 201732064221777CoDEx (large)pykeen.datasets.CoDExLargeSafaviet al., 20207795169612437CoDEx (medium)pykeen.datasets.CoDExMediumSafaviet al., 20201705051206205CoDEx (small)pykeen.datasets.CoDExSmallSafaviet al., 202020344236543ConceptNetpykeen.datasets.ConceptNetSpeeret al., 2017283700835034074917Countriespykeen.datasets.CountriesBouchardet al., 201527121158Commonsense Knowledge Graphpykeen.datasets.CSKGIlievskiet al., 20202087833584598728DB100Kpykeen.datasets.DB100KDinget al., 201899604470697479DBpedia50pykeen.datasets.DBpedia50Shiet al., 20172462435134421Drug Repositioning Knowledge Graphpykeen.datasets.DRKGgnn4dr/DRKG972381075874257FB15kpykeen.datasets.FB15kBordeset al., 2013149511345592213FB15k-237pykeen.datasets.FB15k237Toutanovaet al., 201514505237310079Global Biotic Interactionspykeen.datasets.GlobiPoelenet al., 2014404207391966385Hetionetpykeen.datasets.HetionetHimmelsteinet al., 201745158242250197Kinshipspykeen.datasets.KinshipsKempet al., 20061042510686Nationspykeen.datasets.NationsZhenfengLei/KGDatasets14551992NationsLpykeen.datasets.NationsLiteralpykeen/pykeen14551992OGB BioKGpykeen.datasets.OGBBioKGHuet al., 202093773515088434OGB WikiKG2pykeen.datasets.OGBWikiKG2Huet al., 2020250060453517137181OpenBioLinkpykeen.datasets.OpenBioLinkBreitet al., 2020180992284563407OpenBioLink LQpykeen.datasets.OpenBioLinkLQBreitet al., 20204808763227320889OpenEA Familypykeen.datasets.OpenEASunet al., 20201500024838265PharMeBINetpykeen.datasets.PharMeBINetKönigset al., 2022286940720815883653PharmKGpykeen.datasets.PharmKGZhenget al., 2020188296391093236PharmKG8kpykeen.datasets.PharmKG8kZhenget al., 2020724728485787PrimeKGpykeen.datasets.PrimeKGChandaket al., 2022129375308100498Unified Medical Language Systempykeen.datasets.UMLSZhenfengLei/KGDatasets135466529WD50K (triples)pykeen.datasets.WD50KTGalkinet al., 202040107473232344Wikidata5Mpykeen.datasets.Wikidata5MWanget al., 2019459414982220624239WK3l-120k Familypykeen.datasets.WK3l120kChenet al., 201711974831091375406WK3l-15k Familypykeen.datasets.WK3l15kChenet al., 2017151261841209041WordNet-18pykeen.datasets.WN18Bordeset al., 20144094318151442WordNet-18 (RR)pykeen.datasets.WN18RRToutanovaet al., 2015405591192583YAGO3-10pykeen.datasets.YAGO310Mahdisoltaniet al., 2015123143371089000Inductive DatasetsThe following 5 inductive datasets are built in to PyKEEN.NameDocumentationCitationILPC2022 Largepykeen.datasets.ILPC2022LargeGalkinet al., 2022ILPC2022 Smallpykeen.datasets.ILPC2022SmallGalkinet al., 2022FB15k-237pykeen.datasets.InductiveFB15k237Teruet al., 2020NELLpykeen.datasets.InductiveNELLTeruet al., 2020WordNet-18 (RR)pykeen.datasets.InductiveWN18RRTeruet al., 2020RepresentationsThe following 20 representations are implemented by PyKEEN.NameReferenceBackfillpykeen.nn.BackfillRepresentationText Encodingpykeen.nn.BiomedicalCURIERepresentationCombinedpykeen.nn.CombinedRepresentationEmbeddingpykeen.nn.EmbeddingFeaturized Message Passingpykeen.nn.FeaturizedMessagePassingRepresentationLow Rank Embeddingpykeen.nn.LowRankRepresentationNodePiecepykeen.nn.NodePieceRepresentationPartitionpykeen.nn.PartitionRepresentationR-GCNpykeen.nn.RGCNRepresentationSimple Message Passingpykeen.nn.SimpleMessagePassingRepresentationCompGCNpykeen.nn.SingleCompGCNRepresentationSubset Representationpykeen.nn.SubsetRepresentationTensor-Trainpykeen.nn.TensorTrainRepresentationText Encodingpykeen.nn.TextRepresentationTokenizationpykeen.nn.TokenizationRepresentationTransformedpykeen.nn.TransformedRepresentationTyped Message Passingpykeen.nn.TypedMessagePassingRepresentationVisualpykeen.nn.VisualRepresentationWikidata Text Encodingpykeen.nn.WikidataTextRepresentationWikidata Visualpykeen.nn.WikidataVisualRepresentationInteractionsThe following 34 interactions are implemented by PyKEEN.NameReferenceCitationAutoSFpykeen.nn.AutoSFInteractionZhanget al., 2020BoxEpykeen.nn.BoxEInteractionAbboudet al., 2020ComplExpykeen.nn.ComplExInteractionTrouillonet al., 2016ConvEpykeen.nn.ConvEInteractionDettmerset al., 2018ConvKBpykeen.nn.ConvKBInteractionNguyenet al., 2018Canonical Tensor Decompositionpykeen.nn.CPInteractionLacroixet al., 2018CrossEpykeen.nn.CrossEInteractionZhanget al., 2019DistMApykeen.nn.DistMAInteractionShiet al., 2019DistMultpykeen.nn.DistMultInteractionYanget al., 2014ER-MLPpykeen.nn.ERMLPInteractionDonget al., 2014ER-MLP (E)pykeen.nn.ERMLPEInteractionSharifzadehet al., 2019HolEpykeen.nn.HolEInteractionNickelet al., 2016KG2Epykeen.nn.KG2EInteractionHeet al., 2015LineaREpykeen.nn.LineaREInteractionPenget al., 2020MultiLinearTuckerpykeen.nn.MultiLinearTuckerInteractionTuckeret al., 1966MuREpykeen.nn.MuREInteractionBalaževićet al., 2019NTNpykeen.nn.NTNInteractionSocheret al., 2013PairREpykeen.nn.PairREInteractionChaoet al., 2020ProjEpykeen.nn.ProjEInteractionShiet al., 2017QuatEpykeen.nn.QuatEInteractionZhanget al., 2019RESCALpykeen.nn.RESCALInteractionNickelet al., 2011RotatEpykeen.nn.RotatEInteractionSunet al., 2019Structured Embeddingpykeen.nn.SEInteractionBordeset al., 2011SimplEpykeen.nn.SimplEInteractionKazemiet al., 2018TorusEpykeen.nn.TorusEInteractionEbisuet al., 2018TransDpykeen.nn.TransDInteractionJiet al., 2015TransEpykeen.nn.TransEInteractionBordeset al., 2013TransFpykeen.nn.TransFInteractionFenget al., 2016Transformerpykeen.nn.TransformerInteractionGalkinet al., 2020TransHpykeen.nn.TransHInteractionWanget al., 2014TransRpykeen.nn.TransRInteractionLinet al., 2015TripleREpykeen.nn.TripleREInteractionYuet al., 2021Tuckerpykeen.nn.TuckerInteractionBalaževićet al., 2019Unstructured Modelpykeen.nn.UMInteractionBordeset al., 2014ModelsThe following 40 models are implemented by PyKEEN.NameModelCitationAutoSFpykeen.models.AutoSFZhanget al., 2020BoxEpykeen.models.BoxEAbboudet al., 2020Canonical Tensor Decompositionpykeen.models.CPLacroixet al., 2018CompGCNpykeen.models.CompGCNVashishthet al., 2020ComplExpykeen.models.ComplExTrouillonet al., 2016ComplEx Literalpykeen.models.ComplExLiteralKristiadiet al., 2018ConvEpykeen.models.ConvEDettmerset al., 2018ConvKBpykeen.models.ConvKBNguyenet al., 2018CooccurrenceFilteredpykeen.models.CooccurrenceFilteredModelBerrendorfet al., 2022CrossEpykeen.models.CrossEZhanget al., 2019DistMApykeen.models.DistMAShiet al., 2019DistMultpykeen.models.DistMultYanget al., 2014DistMult Literalpykeen.models.DistMultLiteralKristiadiet al., 2018DistMult Literal (Gated)pykeen.models.DistMultLiteralGatedKristiadiet al., 2018ER-MLPpykeen.models.ERMLPDonget al., 2014ER-MLP (E)pykeen.models.ERMLPESharifzadehet al., 2019Fixed Modelpykeen.models.FixedModelBerrendorfet al., 2021HolEpykeen.models.HolENickelet al., 2016InductiveNodePiecepykeen.models.InductiveNodePieceGalkinet al., 2021InductiveNodePieceGNNpykeen.models.InductiveNodePieceGNNGalkinet al., 2021KG2Epykeen.models.KG2EHeet al., 2015MuREpykeen.models.MuREBalaževićet al., 2019NTNpykeen.models.NTNSocheret al., 2013NodePiecepykeen.models.NodePieceGalkinet al., 2021PairREpykeen.models.PairREChaoet al., 2020ProjEpykeen.models.ProjEShiet al., 2017QuatEpykeen.models.QuatEZhanget al., 2019R-GCNpykeen.models.RGCNSchlichtkrullet al., 2018RESCALpykeen.models.RESCALNickelet al., 2011RotatEpykeen.models.RotatESunet al., 2019SimplEpykeen.models.SimplEKazemiet al., 2018Structured Embeddingpykeen.models.SEBordeset al., 2011TorusEpykeen.models.TorusEEbisuet al., 2018TransDpykeen.models.TransDJiet al., 2015TransEpykeen.models.TransEBordeset al., 2013TransFpykeen.models.TransFFenget al., 2016TransHpykeen.models.TransHWanget al., 2014TransRpykeen.models.TransRLinet al., 2015TuckERpykeen.models.TuckERBalaževićet al., 2019Unstructured Modelpykeen.models.UMBordeset al., 2014LossesThe following 15 losses are implemented by PyKEEN.NameReferenceDescriptionAdversarially weighted binary cross entropy (with logits)pykeen.losses.AdversarialBCEWithLogitsLossAn adversarially weighted BCE loss.Binary cross entropy (after sigmoid)pykeen.losses.BCEAfterSigmoidLossThe numerically unstable version of explicit Sigmoid + BCE loss.Binary cross entropy (with logits)pykeen.losses.BCEWithLogitsLossThe binary cross entropy loss.Cross entropypykeen.losses.CrossEntropyLossThe cross entropy loss that evaluates the cross entropy after softmax output.Double Marginpykeen.losses.DoubleMarginLossA limit-based scoring loss, with separate margins for positive and negative elements from [sun2018]_.Focalpykeen.losses.FocalLossThe focal loss proposed by [lin2018]_.InfoNCE loss with additive marginpykeen.losses.InfoNCELossThe InfoNCE loss with additive margin proposed by [wang2022]_.Margin rankingpykeen.losses.MarginRankingLossThe pairwise hinge loss (i.e., margin ranking loss).Mean squared errorpykeen.losses.MSELossThe mean squared error loss.Self-adversarial negative samplingpykeen.losses.NSSALossThe self-adversarial negative sampling loss function proposed by [sun2019]_.Pairwise logisticpykeen.losses.PairwiseLogisticLossThe pairwise logistic loss.Pointwise Hingepykeen.losses.PointwiseHingeLossThe pointwise hinge loss.Soft margin rankingpykeen.losses.SoftMarginRankingLossThe soft pairwise hinge loss (i.e., soft margin ranking loss).Softpluspykeen.losses.SoftplusLossThe pointwise logistic loss (i.e., softplus loss).Soft Pointwise Hingepykeen.losses.SoftPointwiseHingeLossThe soft pointwise hinge loss.RegularizersThe following 6 regularizers are implemented by PyKEEN.NameReferenceDescriptioncombinedpykeen.regularizers.CombinedRegularizerA convex combination of regularizers.lppykeen.regularizers.LpRegularizerA simple L_p norm based regularizer.nopykeen.regularizers.NoRegularizerA regularizer which does not perform any regularization.normlimitpykeen.regularizers.NormLimitRegularizerA regularizer which formulates a soft constraint on a maximum norm.orthogonalitypykeen.regularizers.OrthogonalityRegularizerA regularizer for the soft orthogonality constraints from [wang2014]_.powersumpykeen.regularizers.PowerSumRegularizerA simple x^p based regularizer.Training LoopsThe following 3 training loops are implemented in PyKEEN.NameReferenceDescriptionlcwapykeen.training.LCWATrainingLoopA training loop that is based upon the local closed world assumption (LCWA).slcwapykeen.training.SLCWATrainingLoopA training loop that uses the stochastic local closed world assumption training approach.symmetriclcwapykeen.training.SymmetricLCWATrainingLoopA "symmetric" LCWA scoring headsandtails at once.Negative SamplersThe following 3 negative samplers are implemented in PyKEEN.NameReferenceDescriptionbasicpykeen.sampling.BasicNegativeSamplerA basic negative sampler.bernoullipykeen.sampling.BernoulliNegativeSamplerAn implementation of the Bernoulli negative sampling approach proposed by [wang2014]_.pseudotypedpykeen.sampling.PseudoTypedNegativeSamplerA sampler that accounts for which entities co-occur with a relation.StoppersThe following 2 stoppers are implemented in PyKEEN.NameReferenceDescriptionearlypykeen.stoppers.EarlyStopperA harness for early stopping.noppykeen.stoppers.NopStopperA stopper that does nothing.EvaluatorsThe following 5 evaluators are implemented in PyKEEN.NameReferenceDescriptionclassificationpykeen.evaluation.ClassificationEvaluatorAn evaluator that uses a classification metrics.macrorankbasedpykeen.evaluation.MacroRankBasedEvaluatorMacro-average rank-based evaluation.ogbpykeen.evaluation.OGBEvaluatorA sampled, rank-based evaluator that applies a custom OGB evaluation.rankbasedpykeen.evaluation.RankBasedEvaluatorA rank-based evaluator for KGE models.sampledrankbasedpykeen.evaluation.SampledRankBasedEvaluatorA rank-based evaluator using sampled negatives instead of all negatives.MetricsThe following 44 metrics are implemented in PyKEEN.NameIntervalDirectionDescriptionTypeAccuracy$[0, 1]$📈The ratio of the number of correct classifications to the total number.ClassificationArea Under The Receiver Operating Characteristic Curve$[0, 1]$📈The area under the receiver operating characteristic curve.ClassificationAverage Precision Score$[0, 1]$📈The average precision across different thresholds.ClassificationBalanced Accuracy Score$[0, 1]$📈The average of recall obtained on each class.ClassificationDiagnostic Odds Ratio$[0, ∞)$📈The ratio of positive and negative likelihood ratio.ClassificationF1 Score$[0, 1]$📈The harmonic mean of precision and recall.ClassificationFalse Discovery Rate$[0, 1]$📉The proportion of predicted negatives which are true positive.ClassificationFalse Negative Rate$[0, 1]$📉The probability that a truly positive triple is predicted negative.ClassificationFalse Omission Rate$[0, 1]$📉The proportion of predicted positives which are true negative.ClassificationFalse Positive Rate$[0, 1]$📉The probability that a truly negative triple is predicted positive.ClassificationFowlkes Mallows Index$[0, 1]$📈The Fowlkes Mallows index.ClassificationInformedness$[-1, 1]$📈The informedness metric.ClassificationMatthews Correlation Coefficient$[-1, 1]$📈The Matthews Correlation Coefficient (MCC).ClassificationNegative Likelihood Ratio$[0, ∞)$📉The ratio of false positive rate to true positive rate.ClassificationNegative Predictive Value$[0, 1]$📈The proportion of predicted negatives which are true negatives.ClassificationNumber of Scores$[0, ∞)$📈The number of scores.ClassificationPositive Likelihood Ratio$[0, ∞)$📈The ratio of true positive rate to false positive rate.ClassificationPositive Predictive Value$[0, 1]$📈The proportion of predicted positives which are true positive.ClassificationPrevalence Threshold$[0, ∞)$📉The prevalence threshold.ClassificationThreat Score$[0, 1]$📈The harmonic mean of precision and recall.ClassificationTrue Negative Rate$[0, 1]$📈The probability that a truly false triple is predicted negative.ClassificationTrue Positive Rate$[0, 1]$📈The probability that a truly positive triple is predicted positive.ClassificationAdjusted Arithmetic Mean Rank (AAMR)$[0, 2)$📉The mean over all ranks divided by its expected value.RankingAdjusted Arithmetic Mean Rank Index (AAMRI)$[-1, 1]$📈The re-indexed adjusted mean rank (AAMR)RankingAdjusted Geometric Mean Rank Index (AGMRI)$(\frac{-E[f]}{1-E[f]}, 1]$📈The re-indexed adjusted geometric mean rank (AGMRI)RankingAdjusted Hits at K$(\frac{-E[f]}{1-E[f]}, 1]$📈The re-indexed adjusted hits at KRankingAdjusted Inverse Harmonic Mean Rank$(\frac{-E[f]}{1-E[f]}, 1]$📈The re-indexed adjusted MRRRankingGeometric Mean Rank (GMR)$[1, ∞)$📉The geometric mean over all ranks.RankingHarmonic Mean Rank (HMR)$[1, ∞)$📉The harmonic mean over all ranks.RankingHits @ K$[0, 1]$📈The relative frequency of ranks not larger than a given k.RankingInverse Arithmetic Mean Rank (IAMR)$(0, 1]$📈The inverse of the arithmetic mean over all ranks.RankingInverse Geometric Mean Rank (IGMR)$(0, 1]$📈The inverse of the geometric mean over all ranks.RankingInverse Median Rank$(0, 1]$📈The inverse of the median over all ranks.RankingMean Rank (MR)$[1, ∞)$📉The arithmetic mean over all ranks.RankingMean Reciprocal Rank (MRR)$(0, 1]$📈The inverse of the harmonic mean over all ranks.RankingMedian Rank$[1, ∞)$📉The median over all ranks.Rankingz-Geometric Mean Rank (zGMR)$(-∞, ∞)$📈The z-scored geometric mean rankRankingz-Hits at K$(-∞, ∞)$📈The z-scored hits at KRankingz-Mean Rank (zMR)$(-∞, ∞)$📈The z-scored mean rankRankingz-Mean Reciprocal Rank (zMRR)$(-∞, ∞)$📈The z-scored mean reciprocal rankRankingTrackersThe following 8 trackers are implemented in PyKEEN.NameReferenceDescriptionconsolepykeen.trackers.ConsoleResultTrackerA class that directly prints to console.csvpykeen.trackers.CSVResultTrackerTracking results to a CSV file.jsonpykeen.trackers.JSONResultTrackerTracking results to a JSON lines file.mlflowpykeen.trackers.MLFlowResultTrackerA tracker for MLflow.neptunepykeen.trackers.NeptuneResultTrackerA tracker for Neptune.ai.pythonpykeen.trackers.PythonResultTrackerA tracker which stores everything in Python dictionaries.tensorboardpykeen.trackers.TensorBoardResultTrackerA tracker for TensorBoard.wandbpykeen.trackers.WANDBResultTrackerA tracker for Weights and Biases.ExperimentationReproductionPyKEEN includes a set of curated experimental settings for reproducing past landmark
experiments. They can be accessed and run like:pykeenexperimentsreproducetuckerbalazevic2019fb15kWhere the three arguments are the model name, the reference, and the dataset.
The output directory can be optionally set with-d.AblationPyKEEN includes the ability to specify ablation studies using the
hyper-parameter optimization module. They can be run like:pykeenexperimentsablation~/path/to/config.jsonLarge-scale Reproducibility and Benchmarking StudyWe used PyKEEN to perform a large-scale reproducibility and benchmarking study which are described inour article:@article{ali2020benchmarking,author={Ali, Mehdi and Berrendorf, Max and Hoyt, Charles Tapley and Vermue, Laurent and Galkin, Mikhail and Sharifzadeh, Sahand and Fischer, Asja and Tresp, Volker and Lehmann, Jens},journal={IEEE Transactions on Pattern Analysis and Machine Intelligence},title={Bringing Light Into the Dark: A Large-scale Evaluation of Knowledge Graph Embedding Models under a Unified Framework},year={2021},pages={1-1},doi={10.1109/TPAMI.2021.3124805}}}We have made all code, experimental configurations, results, and analyses that lead to our interpretations available
athttps://github.com/pykeen/benchmarking.ContributingContributions, whether filing an issue, making a pull request, or forking, are appreciated.
SeeCONTRIBUTING.mdfor more information on getting involved.If you have questions, please use the GitHub discussions feature athttps://github.com/pykeen/pykeen/discussions/new.AcknowledgementsSupportersThis project has been supported by several organizations (in alphabetical order):BayerCoronaWhyEnveda BiosciencesFraunhofer Institute for Algorithms and Scientific ComputingFraunhofer Institute for Intelligent Analysis and Information SystemsFraunhofer Center for Machine LearningHarvard Program in Therapeutic Science - Laboratory of Systems PharmacologyLudwig-Maximilians-Universität MünchenMunich Center for Machine Learning (MCML)SiemensSmart Data Analytics Research Group (University of Bonn & Fraunhofer IAIS)Technical University of Denmark - DTU Compute - Section for Cognitive SystemsTechnical University of Denmark - DTU Compute - Section for Statistics and Data AnalysisUniversity of BonnFundingThe development of PyKEEN has been funded by the following grants:Funding BodyProgramGrantDARPAYoung Faculty Award (PI: Benjamin Gyori)W911NF2010255DARPAAutomating Scientific Knowledge Extraction (ASKE)HR00111990009German Federal Ministry of Education and Research (BMBF)Maschinelles Lernen mit Wissensgraphen (MLWin)01IS18050DGerman Federal Ministry of Education and Research (BMBF)Munich Center for Machine Learning (MCML)01IS18036AInnovation Fund Denmark (Innovationsfonden)Danish Center for Big Data Analytics driven Innovation (DABAI)Grand SolutionsLogoThe PyKEEN logo was designed byCarina SteinbornCitationIf you have found PyKEEN useful in your work, please consider citingour article:@article{ali2021pykeen,author={Ali, Mehdi and Berrendorf, Max and Hoyt, Charles Tapley and Vermue, Laurent and Sharifzadeh, Sahand and Tresp, Volker and Lehmann, Jens},journal={Journal of Machine Learning Research},number={82},pages={1--6},title={{PyKEEN 1.0: A Python Library for Training and Evaluating Knowledge Graph Embeddings}},url={http://jmlr.org/papers/v22/20-825.html},volume={22},year={2021}}