94 lines
20 KiB
Plaintext
94 lines
20 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "7cce205d",
|
|
"metadata": {},
|
|
"source": [
|
|
"# Querries"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"id": "34c85d02",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"ename": "KeyboardInterrupt",
|
|
"evalue": "",
|
|
"output_type": "error",
|
|
"traceback": [
|
|
"\u001b[31m---------------------------------------------------------------------------\u001b[39m",
|
|
"\u001b[31mKeyboardInterrupt\u001b[39m Traceback (most recent call last)",
|
|
"\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[2]\u001b[39m\u001b[32m, line 8\u001b[39m\n\u001b[32m 4\u001b[39m \n\u001b[32m 5\u001b[39m \n\u001b[32m 6\u001b[39m g = rdflib.Graph()\n\u001b[32m 7\u001b[39m \n\u001b[32m----> \u001b[39m\u001b[32m8\u001b[39m g.parse(filename, format=\u001b[33m'ttl'\u001b[39m)\n\u001b[32m 9\u001b[39m \n\u001b[32m 10\u001b[39m query = \"\"\"\n\u001b[32m 11\u001b[39m \n",
|
|
"\u001b[36mFile \u001b[39m\u001b[32m~/th/kgr/.venv/lib/python3.11/site-packages/rdflib/graph.py:1660\u001b[39m, in \u001b[36mGraph.parse\u001b[39m\u001b[34m(self, source, publicID, format, location, file, data, **args)\u001b[39m\n\u001b[32m 1657\u001b[39m parser = plugin.get(\u001b[38;5;28mformat\u001b[39m, Parser)()\n\u001b[32m 1658\u001b[39m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[32m 1659\u001b[39m \u001b[38;5;66;03m# TODO FIXME: Parser.parse should have **kwargs argument.\u001b[39;00m\n\u001b[32m-> \u001b[39m\u001b[32m1660\u001b[39m \u001b[30;43mparser\u001b[39;49m\u001b[30;43m.\u001b[39;49m\u001b[30;43mparse\u001b[39;49m\u001b[30;43m(\u001b[39;49m\u001b[30;43msource\u001b[39;49m\u001b[30;43m,\u001b[39;49m\u001b[30;43m \u001b[39;49m\u001b[30;43mself\u001b[39;49m\u001b[30;43m,\u001b[39;49m\u001b[30;43m \u001b[39;49m\u001b[30;43m*\u001b[39;49m\u001b[30;43m*\u001b[39;49m\u001b[30;43margs\u001b[39;49m\u001b[30;43m)\u001b[39;49m\n\u001b[32m 1661\u001b[39m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mSyntaxError\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m se:\n\u001b[32m 1662\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m could_not_guess_format:\n",
|
|
"\u001b[36mFile \u001b[39m\u001b[32m~/th/kgr/.venv/lib/python3.11/site-packages/rdflib/plugins/parsers/notation3.py:2034\u001b[39m, in \u001b[36mTurtleParser.parse\u001b[39m\u001b[34m(self, source, graph, encoding, turtle)\u001b[39m\n\u001b[32m 2032\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m stream:\n\u001b[32m 2033\u001b[39m stream = source.getByteStream()\n\u001b[32m-> \u001b[39m\u001b[32m2034\u001b[39m \u001b[30;43mp\u001b[39;49m\u001b[30;43m.\u001b[39;49m\u001b[30;43mloadStream\u001b[39;49m\u001b[30;43m(\u001b[39;49m\u001b[30;43mstream\u001b[39;49m\u001b[30;43m)\u001b[39;49m\n\u001b[32m 2036\u001b[39m \u001b[38;5;28;01mfor\u001b[39;00m prefix, namespace \u001b[38;5;129;01min\u001b[39;00m p._bindings.items():\n\u001b[32m 2037\u001b[39m graph.bind(prefix, namespace)\n",
|
|
"\u001b[36mFile \u001b[39m\u001b[32m~/th/kgr/.venv/lib/python3.11/site-packages/rdflib/plugins/parsers/notation3.py:492\u001b[39m, in \u001b[36mSinkParser.loadStream\u001b[39m\u001b[34m(self, stream)\u001b[39m\n\u001b[32m 491\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34mloadStream\u001b[39m(\u001b[38;5;28mself\u001b[39m, stream: Union[IO[\u001b[38;5;28mstr\u001b[39m], IO[\u001b[38;5;28mbytes\u001b[39m]]) -> Optional[Formula]:\n\u001b[32m--> \u001b[39m\u001b[32m492\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[30;43mself\u001b[39;49m\u001b[30;43m.\u001b[39;49m\u001b[30;43mloadBuf\u001b[39;49m\u001b[30;43m(\u001b[39;49m\u001b[30;43mstream\u001b[39;49m\u001b[30;43m.\u001b[39;49m\u001b[30;43mread\u001b[39;49m\u001b[30;43m(\u001b[39;49m\u001b[30;43m)\u001b[39;49m\u001b[30;43m)\u001b[39;49m\n",
|
|
"\u001b[36mFile \u001b[39m\u001b[32m~/th/kgr/.venv/lib/python3.11/site-packages/rdflib/plugins/parsers/notation3.py:498\u001b[39m, in \u001b[36mSinkParser.loadBuf\u001b[39m\u001b[34m(self, buf)\u001b[39m\n\u001b[32m 495\u001b[39m \u001b[38;5;250m\u001b[39m\u001b[33;03m\"\"\"Parses a buffer and returns its top level formula\"\"\"\u001b[39;00m\n\u001b[32m 496\u001b[39m \u001b[38;5;28mself\u001b[39m.startDoc()\n\u001b[32m--> \u001b[39m\u001b[32m498\u001b[39m \u001b[30;43mself\u001b[39;49m\u001b[30;43m.\u001b[39;49m\u001b[30;43mfeed\u001b[39;49m\u001b[30;43m(\u001b[39;49m\u001b[30;43mbuf\u001b[39;49m\u001b[30;43m)\u001b[39;49m\n\u001b[32m 499\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m.endDoc()\n",
|
|
"\u001b[36mFile \u001b[39m\u001b[32m~/th/kgr/.venv/lib/python3.11/site-packages/rdflib/plugins/parsers/notation3.py:524\u001b[39m, in \u001b[36mSinkParser.feed\u001b[39m\u001b[34m(self, octets)\u001b[39m\n\u001b[32m 521\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m j < \u001b[32m0\u001b[39m:\n\u001b[32m 522\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m\n\u001b[32m--> \u001b[39m\u001b[32m524\u001b[39m i = \u001b[30;43mself\u001b[39;49m\u001b[30;43m.\u001b[39;49m\u001b[30;43mdirectiveOrStatement\u001b[39;49m\u001b[30;43m(\u001b[39;49m\u001b[30;43ms\u001b[39;49m\u001b[30;43m,\u001b[39;49m\u001b[30;43m \u001b[39;49m\u001b[30;43mj\u001b[39;49m\u001b[30;43m)\u001b[39;49m\n\u001b[32m 525\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m i < \u001b[32m0\u001b[39m:\n\u001b[32m 526\u001b[39m \u001b[38;5;66;03m# print(\"# next char: %s\" % s[j])\u001b[39;00m\n\u001b[32m 527\u001b[39m \u001b[38;5;28mself\u001b[39m.BadSyntax(s, j, \u001b[33m\"\u001b[39m\u001b[33mexpected directive or statement\u001b[39m\u001b[33m\"\u001b[39m)\n",
|
|
"\u001b[36mFile \u001b[39m\u001b[32m~/th/kgr/.venv/lib/python3.11/site-packages/rdflib/plugins/parsers/notation3.py:543\u001b[39m, in \u001b[36mSinkParser.directiveOrStatement\u001b[39m\u001b[34m(self, argstr, h)\u001b[39m\n\u001b[32m 540\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m j >= \u001b[32m0\u001b[39m:\n\u001b[32m 541\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m.checkDot(argstr, j)\n\u001b[32m--> \u001b[39m\u001b[32m543\u001b[39m j = \u001b[30;43mself\u001b[39;49m\u001b[30;43m.\u001b[39;49m\u001b[30;43mstatement\u001b[39;49m\u001b[30;43m(\u001b[39;49m\u001b[30;43margstr\u001b[39;49m\u001b[30;43m,\u001b[39;49m\u001b[30;43m \u001b[39;49m\u001b[30;43mi\u001b[39;49m\u001b[30;43m)\u001b[39;49m\n\u001b[32m 544\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m j >= \u001b[32m0\u001b[39m:\n\u001b[32m 545\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m.checkDot(argstr, j)\n",
|
|
"\u001b[36mFile \u001b[39m\u001b[32m~/th/kgr/.venv/lib/python3.11/site-packages/rdflib/plugins/parsers/notation3.py:791\u001b[39m, in \u001b[36mSinkParser.statement\u001b[39m\u001b[34m(self, argstr, i)\u001b[39m\n\u001b[32m 788\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m i < \u001b[32m0\u001b[39m:\n\u001b[32m 789\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m i\n\u001b[32m--> \u001b[39m\u001b[32m791\u001b[39m j = \u001b[30;43mself\u001b[39;49m\u001b[30;43m.\u001b[39;49m\u001b[30;43mproperty_list\u001b[39;49m\u001b[30;43m(\u001b[39;49m\u001b[30;43margstr\u001b[39;49m\u001b[30;43m,\u001b[39;49m\u001b[30;43m \u001b[39;49m\u001b[30;43mi\u001b[39;49m\u001b[30;43m,\u001b[39;49m\u001b[30;43m \u001b[39;49m\u001b[30;43mr\u001b[39;49m\u001b[30;43m[\u001b[39;49m\u001b[30;43m0\u001b[39;49m\u001b[30;43m]\u001b[39;49m\u001b[30;43m)\u001b[39;49m\n\u001b[32m 793\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m j < \u001b[32m0\u001b[39m:\n\u001b[32m 794\u001b[39m \u001b[38;5;28mself\u001b[39m.BadSyntax(argstr, i, \u001b[33m\"\u001b[39m\u001b[33mexpected propertylist\u001b[39m\u001b[33m\"\u001b[39m)\n",
|
|
"\u001b[36mFile \u001b[39m\u001b[32m~/th/kgr/.venv/lib/python3.11/site-packages/rdflib/plugins/parsers/notation3.py:1153\u001b[39m, in \u001b[36mSinkParser.property_list\u001b[39m\u001b[34m(self, argstr, i, subj)\u001b[39m\n\u001b[32m 1150\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m i \u001b[38;5;66;03m# void but valid\u001b[39;00m\n\u001b[32m 1152\u001b[39m objs: typing.List[Any] = []\n\u001b[32m-> \u001b[39m\u001b[32m1153\u001b[39m i = \u001b[30;43mself\u001b[39;49m\u001b[30;43m.\u001b[39;49m\u001b[30;43mobjectList\u001b[39;49m\u001b[30;43m(\u001b[39;49m\u001b[30;43margstr\u001b[39;49m\u001b[30;43m,\u001b[39;49m\u001b[30;43m \u001b[39;49m\u001b[30;43mj\u001b[39;49m\u001b[30;43m,\u001b[39;49m\u001b[30;43m \u001b[39;49m\u001b[30;43mobjs\u001b[39;49m\u001b[30;43m)\u001b[39;49m\n\u001b[32m 1154\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m i < \u001b[32m0\u001b[39m:\n\u001b[32m 1155\u001b[39m \u001b[38;5;28mself\u001b[39m.BadSyntax(argstr, j, \u001b[33m\"\u001b[39m\u001b[33mobjectList expected\u001b[39m\u001b[33m\"\u001b[39m)\n",
|
|
"\u001b[36mFile \u001b[39m\u001b[32m~/th/kgr/.venv/lib/python3.11/site-packages/rdflib/plugins/parsers/notation3.py:1203\u001b[39m, in \u001b[36mSinkParser.objectList\u001b[39m\u001b[34m(self, argstr, i, res)\u001b[39m\n\u001b[32m 1202\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34mobjectList\u001b[39m(\u001b[38;5;28mself\u001b[39m, argstr: \u001b[38;5;28mstr\u001b[39m, i: \u001b[38;5;28mint\u001b[39m, res: MutableSequence[Any]) -> \u001b[38;5;28mint\u001b[39m:\n\u001b[32m-> \u001b[39m\u001b[32m1203\u001b[39m i = \u001b[30;43mself\u001b[39;49m\u001b[30;43m.\u001b[39;49m\u001b[30;43mobject\u001b[39;49m\u001b[30;43m(\u001b[39;49m\u001b[30;43margstr\u001b[39;49m\u001b[30;43m,\u001b[39;49m\u001b[30;43m \u001b[39;49m\u001b[30;43mi\u001b[39;49m\u001b[30;43m,\u001b[39;49m\u001b[30;43m \u001b[39;49m\u001b[30;43mres\u001b[39;49m\u001b[30;43m)\u001b[39;49m\n\u001b[32m 1204\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m i < \u001b[32m0\u001b[39m:\n\u001b[32m 1205\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m -\u001b[32m1\u001b[39m\n",
|
|
"\u001b[36mFile \u001b[39m\u001b[32m~/th/kgr/.venv/lib/python3.11/site-packages/rdflib/plugins/parsers/notation3.py:1500\u001b[39m, in \u001b[36mSinkParser.object\u001b[39m\u001b[34m(self, argstr, i, res)\u001b[39m\n\u001b[32m 1494\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34mobject\u001b[39m(\n\u001b[32m 1495\u001b[39m \u001b[38;5;28mself\u001b[39m,\n\u001b[32m 1496\u001b[39m argstr: \u001b[38;5;28mstr\u001b[39m,\n\u001b[32m 1497\u001b[39m i: \u001b[38;5;28mint\u001b[39m,\n\u001b[32m 1498\u001b[39m res: MutableSequence[Any],\n\u001b[32m 1499\u001b[39m ) -> \u001b[38;5;28mint\u001b[39m:\n\u001b[32m-> \u001b[39m\u001b[32m1500\u001b[39m j = \u001b[30;43mself\u001b[39;49m\u001b[30;43m.\u001b[39;49m\u001b[30;43msubject\u001b[39;49m\u001b[30;43m(\u001b[39;49m\u001b[30;43margstr\u001b[39;49m\u001b[30;43m,\u001b[39;49m\u001b[30;43m \u001b[39;49m\u001b[30;43mi\u001b[39;49m\u001b[30;43m,\u001b[39;49m\u001b[30;43m \u001b[39;49m\u001b[30;43mres\u001b[39;49m\u001b[30;43m)\u001b[39;49m\n\u001b[32m 1501\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m j >= \u001b[32m0\u001b[39m:\n\u001b[32m 1502\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m j\n",
|
|
"\u001b[36mFile \u001b[39m\u001b[32m~/th/kgr/.venv/lib/python3.11/site-packages/rdflib/plugins/parsers/notation3.py:798\u001b[39m, in \u001b[36mSinkParser.subject\u001b[39m\u001b[34m(self, argstr, i, res)\u001b[39m\n\u001b[32m 797\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34msubject\u001b[39m(\u001b[38;5;28mself\u001b[39m, argstr: \u001b[38;5;28mstr\u001b[39m, i: \u001b[38;5;28mint\u001b[39m, res: MutableSequence[Any]) -> \u001b[38;5;28mint\u001b[39m:\n\u001b[32m--> \u001b[39m\u001b[32m798\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[30;43mself\u001b[39;49m\u001b[30;43m.\u001b[39;49m\u001b[30;43mitem\u001b[39;49m\u001b[30;43m(\u001b[39;49m\u001b[30;43margstr\u001b[39;49m\u001b[30;43m,\u001b[39;49m\u001b[30;43m \u001b[39;49m\u001b[30;43mi\u001b[39;49m\u001b[30;43m,\u001b[39;49m\u001b[30;43m \u001b[39;49m\u001b[30;43mres\u001b[39;49m\u001b[30;43m)\u001b[39;49m\n",
|
|
"\u001b[36mFile \u001b[39m\u001b[32m~/th/kgr/.venv/lib/python3.11/site-packages/rdflib/plugins/parsers/notation3.py:890\u001b[39m, in \u001b[36mSinkParser.item\u001b[39m\u001b[34m(self, argstr, i, res)\u001b[39m\n\u001b[32m 889\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34mitem\u001b[39m(\u001b[38;5;28mself\u001b[39m, argstr: \u001b[38;5;28mstr\u001b[39m, i, res: MutableSequence[Any]) -> \u001b[38;5;28mint\u001b[39m:\n\u001b[32m--> \u001b[39m\u001b[32m890\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[30;43mself\u001b[39;49m\u001b[30;43m.\u001b[39;49m\u001b[30;43mpath\u001b[39;49m\u001b[30;43m(\u001b[39;49m\u001b[30;43margstr\u001b[39;49m\u001b[30;43m,\u001b[39;49m\u001b[30;43m \u001b[39;49m\u001b[30;43mi\u001b[39;49m\u001b[30;43m,\u001b[39;49m\u001b[30;43m \u001b[39;49m\u001b[30;43mres\u001b[39;49m\u001b[30;43m)\u001b[39;49m\n",
|
|
"\u001b[36mFile \u001b[39m\u001b[32m~/th/kgr/.venv/lib/python3.11/site-packages/rdflib/plugins/parsers/notation3.py:897\u001b[39m, in \u001b[36mSinkParser.path\u001b[39m\u001b[34m(self, argstr, i, res)\u001b[39m\n\u001b[32m 895\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34mpath\u001b[39m(\u001b[38;5;28mself\u001b[39m, argstr: \u001b[38;5;28mstr\u001b[39m, i: \u001b[38;5;28mint\u001b[39m, res: MutableSequence[Any]) -> \u001b[38;5;28mint\u001b[39m:\n\u001b[32m 896\u001b[39m \u001b[38;5;250m \u001b[39m\u001b[33;03m\"\"\"Parse the path production.\"\"\"\u001b[39;00m\n\u001b[32m--> \u001b[39m\u001b[32m897\u001b[39m j = \u001b[30;43mself\u001b[39;49m\u001b[30;43m.\u001b[39;49m\u001b[30;43mnodeOrLiteral\u001b[39;49m\u001b[30;43m(\u001b[39;49m\u001b[30;43margstr\u001b[39;49m\u001b[30;43m,\u001b[39;49m\u001b[30;43m \u001b[39;49m\u001b[30;43mi\u001b[39;49m\u001b[30;43m,\u001b[39;49m\u001b[30;43m \u001b[39;49m\u001b[30;43mres\u001b[39;49m\u001b[30;43m)\u001b[39;49m\n\u001b[32m 898\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m j < \u001b[32m0\u001b[39m:\n\u001b[32m 899\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m j \u001b[38;5;66;03m# nope\u001b[39;00m\n",
|
|
"\u001b[36mFile \u001b[39m\u001b[32m~/th/kgr/.venv/lib/python3.11/site-packages/rdflib/plugins/parsers/notation3.py:1528\u001b[39m, in \u001b[36mSinkParser.nodeOrLiteral\u001b[39m\u001b[34m(self, argstr, i, res)\u001b[39m\n\u001b[32m 1527\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34mnodeOrLiteral\u001b[39m(\u001b[38;5;28mself\u001b[39m, argstr: \u001b[38;5;28mstr\u001b[39m, i: \u001b[38;5;28mint\u001b[39m, res: MutableSequence[Any]) -> \u001b[38;5;28mint\u001b[39m:\n\u001b[32m-> \u001b[39m\u001b[32m1528\u001b[39m j = \u001b[30;43mself\u001b[39;49m\u001b[30;43m.\u001b[39;49m\u001b[30;43mnode\u001b[39;49m\u001b[30;43m(\u001b[39;49m\u001b[30;43margstr\u001b[39;49m\u001b[30;43m,\u001b[39;49m\u001b[30;43m \u001b[39;49m\u001b[30;43mi\u001b[39;49m\u001b[30;43m,\u001b[39;49m\u001b[30;43m \u001b[39;49m\u001b[30;43mres\u001b[39;49m\u001b[30;43m)\u001b[39;49m\n\u001b[32m 1529\u001b[39m startline = \u001b[38;5;28mself\u001b[39m.lines \u001b[38;5;66;03m# Remember where for error messages\u001b[39;00m\n\u001b[32m 1530\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m j >= \u001b[32m0\u001b[39m:\n",
|
|
"\u001b[36mFile \u001b[39m\u001b[32m~/th/kgr/.venv/lib/python3.11/site-packages/rdflib/plugins/parsers/notation3.py:1115\u001b[39m, in \u001b[36mSinkParser.node\u001b[39m\u001b[34m(self, argstr, i, res, subjectAlready)\u001b[39m\n\u001b[32m 1112\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m j\n\u001b[32m 1114\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m subj \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m: \u001b[38;5;66;03m# If this can be a named node, then check for a name.\u001b[39;00m\n\u001b[32m-> \u001b[39m\u001b[32m1115\u001b[39m j = \u001b[30;43mself\u001b[39;49m\u001b[30;43m.\u001b[39;49m\u001b[30;43muri_ref2\u001b[39;49m\u001b[30;43m(\u001b[39;49m\u001b[30;43margstr\u001b[39;49m\u001b[30;43m,\u001b[39;49m\u001b[30;43m \u001b[39;49m\u001b[30;43mi\u001b[39;49m\u001b[30;43m,\u001b[39;49m\u001b[30;43m \u001b[39;49m\u001b[30;43mres\u001b[39;49m\u001b[30;43m)\u001b[39;49m\n\u001b[32m 1116\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m j >= \u001b[32m0\u001b[39m:\n\u001b[32m 1117\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m j\n",
|
|
"\u001b[36mFile \u001b[39m\u001b[32m~/th/kgr/.venv/lib/python3.11/site-packages/rdflib/plugins/parsers/notation3.py:1254\u001b[39m, in \u001b[36mSinkParser.uri_ref2\u001b[39m\u001b[34m(self, argstr, i, res)\u001b[39m\n\u001b[32m 1252\u001b[39m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[32m 1253\u001b[39m \u001b[38;5;28mself\u001b[39m.BadSyntax(argstr, i, \u001b[33m'\u001b[39m\u001b[33mPrefix \u001b[39m\u001b[33m\"\u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[33m:\u001b[39m\u001b[33m\"\u001b[39m\u001b[33m not bound\u001b[39m\u001b[33m'\u001b[39m % (pfx))\n\u001b[32m-> \u001b[39m\u001b[32m1254\u001b[39m symb = \u001b[38;5;28mself\u001b[39m._store.newSymbol(\u001b[30;43mns\u001b[39;49m\u001b[30;43m \u001b[39;49m\u001b[30;43m+\u001b[39;49m\u001b[30;43m \u001b[39;49m\u001b[30;43mln\u001b[39;49m)\n\u001b[32m 1255\u001b[39m res.append(\u001b[38;5;28mself\u001b[39m._variables.get(symb, symb))\n\u001b[32m 1256\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m j\n",
|
|
"\u001b[36mFile \u001b[39m\u001b[32m~/th/kgr/.venv/lib/python3.11/site-packages/rdflib/term.py:359\u001b[39m, in \u001b[36mURIRef.__add__\u001b[39m\u001b[34m(self, other)\u001b[39m\n\u001b[32m 358\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34m__add__\u001b[39m(\u001b[38;5;28mself\u001b[39m, other) -> URIRef:\n\u001b[32m--> \u001b[39m\u001b[32m359\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[30;43mself\u001b[39;49m\u001b[30;43m.\u001b[39;49m\u001b[30;43m__class__\u001b[39;49m\u001b[30;43m(\u001b[39;49m\u001b[30;43mstr\u001b[39;49m\u001b[30;43m(\u001b[39;49m\u001b[30;43mself\u001b[39;49m\u001b[30;43m)\u001b[39;49m\u001b[30;43m \u001b[39;49m\u001b[30;43m+\u001b[39;49m\u001b[30;43m \u001b[39;49m\u001b[30;43mother\u001b[39;49m\u001b[30;43m)\u001b[39;49m\n",
|
|
"\u001b[36mFile \u001b[39m\u001b[32m~/th/kgr/.venv/lib/python3.11/site-packages/rdflib/term.py:286\u001b[39m, in \u001b[36mURIRef.__new__\u001b[39m\u001b[34m(cls, value, base)\u001b[39m\n\u001b[32m 283\u001b[39m \u001b[34m__neg__\u001b[39m: Callable[[URIRef], NegatedPath]\n\u001b[32m 284\u001b[39m \u001b[34m__truediv__\u001b[39m: Callable[[URIRef, Union[URIRef, Path]], SequencePath]\n\u001b[32m--> \u001b[39m\u001b[32m286\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34m__new__\u001b[39m(\u001b[38;5;28mcls\u001b[39m, value: \u001b[38;5;28mstr\u001b[39m, base: Optional[\u001b[38;5;28mstr\u001b[39m] = \u001b[38;5;28;01mNone\u001b[39;00m):\n\u001b[32m 287\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m base \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[32m 288\u001b[39m ends_in_hash = value.endswith(\u001b[33m\"\u001b[39m\u001b[33m#\u001b[39m\u001b[33m\"\u001b[39m)\n",
|
|
"\u001b[31mKeyboardInterrupt\u001b[39m: "
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"import rdflib\n",
|
|
" \n",
|
|
"filename = \"lego_graph_rebrickable.ttl\"\n",
|
|
"\n",
|
|
"\n",
|
|
"g = rdflib.Graph()\n",
|
|
"\n",
|
|
"g.parse(filename, format='ttl')\n",
|
|
"\n",
|
|
"query = \"\"\"\n",
|
|
"\n",
|
|
"SELECT ?person\n",
|
|
"WHERE {\n",
|
|
" ?person thmont:color <https://thm.de/color/19>\n",
|
|
"\n",
|
|
"\"\"\"\n",
|
|
"\n",
|
|
"qres = g.query(query)\n",
|
|
"\n",
|
|
"for row in qres :\n",
|
|
" print(\"%s\" % row)"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "kgr",
|
|
"language": "python",
|
|
"name": "python3"
|
|
},
|
|
"language_info": {
|
|
"codemirror_mode": {
|
|
"name": "ipython",
|
|
"version": 3
|
|
},
|
|
"file_extension": ".py",
|
|
"mimetype": "text/x-python",
|
|
"name": "python",
|
|
"nbconvert_exporter": "python",
|
|
"pygments_lexer": "ipython3",
|
|
"version": "3.11.2"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 5
|
|
}
|