Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

community: Fix GraphSparqlQAChain so that it works with Ontotext GraphDB #15009

Merged
Merged
9 changes: 7 additions & 2 deletions libs/community/langchain_community/graphs/rdf_graph.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

from typing import (
TYPE_CHECKING,
Dict,
List,
Optional,
)
Expand Down Expand Up @@ -115,6 +116,7 @@ def __init__(
update_endpoint: Optional[str] = None,
standard: Optional[str] = "rdf",
local_copy: Optional[str] = None,
graph_kwargs: Optional[Dict] = None,
) -> None:
"""
Set up the RDFlib graph
Expand All @@ -125,6 +127,9 @@ def __init__(
:param update_endpoint: SPARQL endpoint for UPDATE queries, write access
:param standard: RDF, RDFS, or OWL
:param local_copy: new local copy for storing changes
:param graph_kwargs: Additional rdflib.Graph specific kwargs
that will be used to initialize it,
if query_endpoint is provided.
"""
self.source_file = source_file
self.serialization = serialization
Expand All @@ -135,7 +140,6 @@ def __init__(

try:
import rdflib
from rdflib.graph import DATASET_DEFAULT_GRAPH_ID as default
from rdflib.plugins.stores import sparqlstore
except ImportError:
raise ValueError(
Expand Down Expand Up @@ -177,7 +181,8 @@ def __init__(
else:
self._store = sparqlstore.SPARQLUpdateStore()
self._store.open((query_endpoint, update_endpoint))
self.graph = rdflib.Graph(self._store, identifier=default)
nelly-hateva marked this conversation as resolved.
Show resolved Hide resolved
graph_kwargs = graph_kwargs or {}
self.graph = rdflib.Graph(self._store, **graph_kwargs)

# Verify that the graph was loaded
if not len(self.graph):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
FROM ontotext/graphdb:10.5.1
RUN mkdir -p /opt/graphdb/dist/data/repositories/starwars
COPY config.ttl /opt/graphdb/dist/data/repositories/starwars/
COPY config-starwars.ttl /opt/graphdb/dist/data/repositories/starwars/config.ttl
RUN mkdir -p /opt/graphdb/dist/data/repositories/langchain
COPY config-langchain.ttl /opt/graphdb/dist/data/repositories/langchain/config.ttl
COPY starwars-data.trig /
COPY berners-lee-card.ttl /
COPY graphdb_create.sh /run.sh
ENTRYPOINT bash /run.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
@prefix : <http://xmlns.com/foaf/0.1/> .
@prefix Be: <https://www.w3.org/People/Berners-Lee/> .
@prefix Pub: <https://timbl.com/timbl/Public/> .
@prefix blog: <http://dig.csail.mit.edu/breadcrumbs/blog/> .
@prefix card: <https://www.w3.org/People/Berners-Lee/card#> .
@prefix cc: <http://creativecommons.org/ns#> .
@prefix cert: <http://www.w3.org/ns/auth/cert#> .
@prefix con: <http://www.w3.org/2000/10/swap/pim/contact#> .
@prefix dc: <http://purl.org/dc/elements/1.1/> .
@prefix dct: <http://purl.org/dc/terms/> .
@prefix doap: <http://usefulinc.com/ns/doap#> .
@prefix geo1: <http://www.w3.org/2003/01/geo/wgs84_pos#> .
@prefix ldp: <http://www.w3.org/ns/ldp#> .
@prefix s: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix schema1: <http://schema.org/> .
@prefix sioc: <http://rdfs.org/sioc/ns#> .
@prefix solid: <http://www.w3.org/ns/solid/terms#> .
@prefix space: <http://www.w3.org/ns/pim/space#> .
@prefix vcard: <http://www.w3.org/2006/vcard/ns#> .
@prefix w3c: <http://www.w3.org/data#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

<http://dig.csail.mit.edu/2005/ajar/ajaw/data#Tabulator> doap:developer card:i .

<http://dig.csail.mit.edu/2007/01/camp/data#course> :maker card:i .

<http://dig.csail.mit.edu/data#DIG> :member card:i .

<http://wiki.ontoworld.org/index.php/_IRW2006> dc:title "Identity, Reference and the Web workshop 2006" ;
con:participant card:i .

<http://www.ecs.soton.ac.uk/~dt2/dlstuff/www2006_data#panel-panelk01> s:label "The Next Wave of the Web (Plenary Panel)" ;
con:participant card:i .

<http://www.w3.org/2000/10/swap/data#Cwm> doap:developer card:i .

<http://www.w3.org/2011/Talks/0331-hyderabad-tbl/data#talk> dct:title "Designing the Web for an Open Society" ;
:maker card:i .

w3c:W3C :member card:i .

<https://www.w3.org/DesignIssues/Overview.html> dc:title "Design Issues for the World Wide Web" ;
:maker card:i .

Be:card a :PersonalProfileDocument ;
cc:license <http://creativecommons.org/licenses/by-nc/3.0/> ;
dc:title "Tim Berners-Lee's FOAF file" ;
:maker card:i ;
:primaryTopic card:i .

blog:4 dc:title "timbl's blog on DIG" ;
s:seeAlso <http://dig.csail.mit.edu/breadcrumbs/blog/feed/4> ;
:maker card:i .

Pub:friends.ttl a :PersonalProfileDocument ;
cc:license <http://creativecommons.org/licenses/by-nc/3.0/> ;
dc:title "Tim Berners-Lee's editable profile" ;
:maker card:i ;
:primaryTopic card:i .

card:i a con:Male,
:Person ;
s:label "Tim Berners-Lee" ;
sioc:avatar <https://www.w3.org/People/Berners-Lee/images/timbl-image-by-Coz-cropped.jpg> ;
schema1:owns <https://timblbot.inrupt.net/profile/card#me> ;
s:seeAlso Pub:friends.ttl ;
con:assistant card:amy ;
con:homePage Be: ;
con:office [ con:address [ con:city "Cambridge" ;
con:country "USA" ;
con:postalCode "02139" ;
con:street "32 Vassar Street" ;
con:street2 "MIT CSAIL Building 32" ] ;
geo1:location [ geo1:lat "42.361860" ;
geo1:long "-71.091840" ] ] ;
con:preferredURI "https://www.w3.org/People/Berners-Lee/card#i" ;
con:publicHomePage Be: ;
vcard:fn "Tim Berners-Lee" ;
vcard:hasAddress [ a vcard:Work ;
vcard:locality "Cambridge" ;
vcard:postal-code "02139" ;
vcard:region "MA" ;
vcard:street-address "32 Vassar Street" ] ;
cert:key [ a cert:RSAPublicKey ;
cert:exponent 65537 ;
cert:modulus "ebe99c737bd3670239600547e5e2eb1d1497da39947b6576c3c44ffeca32cf0f2f7cbee3c47001278a90fc7fc5bcf292f741eb1fcd6bbe7f90650afb519cf13e81b2bffc6e02063ee5a55781d420b1dfaf61c15758480e66d47fb0dcb5fa7b9f7f1052e5ccbd01beee9553c3b6b51f4daf1fce991294cd09a3d1d636bc6c7656e4455d0aff06daec740ed0084aa6866fcae1359de61cc12dbe37c8fa42e977c6e727a8258bb9a3f265b27e3766fe0697f6aa0bcc81c3f026e387bd7bbc81580dc1853af2daa099186a9f59da526474ef6ec0a3d84cf400be3261b6b649dea1f78184862d34d685d2d587f09acc14cd8e578fdd2283387821296f0af39b8d8845"^^xsd:hexBinary ] ;
ldp:inbox Pub:Inbox ;
space:preferencesFile <https://timbl.com/timbl/Data/preferences.n3> ;
space:storage Pub:,
<https://timbl.inrupt.net/>,
<https://timbl.solid.community/> ;
solid:editableProfile Pub:friends.ttl ;
solid:oidcIssuer <https://timbl.com> ;
solid:profileBackgroundColor "#ffffff" ;
solid:profileHighlightColor "#00467E" ;
solid:publicTypeIndex Pub:PublicTypeIndex.ttl ;
:account <http://en.wikipedia.org/wiki/User:Timbl>,
<http://twitter.com/timberners_lee>,
<http://www.reddit.com/user/timbl/> ;
:based_near [ geo1:lat "42.361860" ;
geo1:long "-71.091840" ] ;
:family_name "Berners-Lee" ;
:givenname "Timothy" ;
:homepage Be: ;
:img <https://www.w3.org/Press/Stock/Berners-Lee/2001-europaeum-eighth.jpg> ;
:mbox <mailto:timbl@w3.org> ;
:mbox_sha1sum "965c47c5a70db7407210cef6e4e6f5374a525c5c" ;
:name "Timothy Berners-Lee" ;
:nick "TimBL",
"timbl" ;
:openid Be: ;
:title "Sir" ;
:weblog blog:4 ;
:workplaceHomepage <https://www.w3.org/> .
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.
@prefix rep: <http://www.openrdf.org/config/repository#>.
@prefix sr: <http://www.openrdf.org/config/repository/sail#>.
@prefix sail: <http://www.openrdf.org/config/sail#>.
@prefix graphdb: <http://www.ontotext.com/config/graphdb#>.

[] a rep:Repository ;
rep:repositoryID "langchain" ;
rdfs:label "" ;
rep:repositoryImpl [
rep:repositoryType "graphdb:SailRepository" ;
sr:sailImpl [
sail:sailType "graphdb:Sail" ;

graphdb:read-only "false" ;

# Inference and Validation
graphdb:ruleset "empty" ;
graphdb:disable-sameAs "true" ;
graphdb:check-for-inconsistencies "false" ;

# Indexing
graphdb:entity-id-size "32" ;
graphdb:enable-context-index "false" ;
graphdb:enablePredicateList "true" ;
graphdb:enable-fts-index "false" ;
graphdb:fts-indexes ("default" "iri") ;
graphdb:fts-string-literals-index "default" ;
graphdb:fts-iris-index "none" ;

# Queries and Updates
graphdb:query-timeout "0" ;
graphdb:throw-QueryEvaluationException-on-timeout "false" ;
graphdb:query-limit-results "0" ;

# Settable in the file but otherwise hidden in the UI and in the RDF4J console
graphdb:base-URL "http://example.org/owlim#" ;
graphdb:defaultNS "" ;
graphdb:imports "" ;
graphdb:repository-type "file-repository" ;
graphdb:storage-folder "storage" ;
graphdb:entity-index-size "10000000" ;
graphdb:in-memory-literal-properties "true" ;
graphdb:enable-literal-index "true" ;
]
].
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
#! /bin/bash
REPOSITORY_ID="starwars"
GRAPHDB_URI="http://localhost:7200/"

echo -e "\nUsing GraphDB: ${GRAPHDB_URI}"
Expand All @@ -24,7 +23,10 @@ function waitGraphDBStart {

function loadData {
echo -e "\nImporting starwars-data.trig"
curl -X POST -H "Content-Type: application/x-trig" -T /starwars-data.trig ${GRAPHDB_URI}/repositories/${REPOSITORY_ID}/statements
curl -X POST -H "Content-Type: application/x-trig" -T /starwars-data.trig ${GRAPHDB_URI}/repositories/starwars/statements

echo -e "\nImporting berners-lee-card.ttl"
curl -X POST -H "Content-Type:application/x-turtle" -T /berners-lee-card.ttl ${GRAPHDB_URI}/repositories/langchain/statements
}

startGraphDB &
Expand Down