Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
77 changes: 39 additions & 38 deletions tripper/triplestore.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
For developers: The usage of `s`, `p`, and `o` represent the different
parts of an RDF Triple: subject, predicate, and object.


"""

# pylint: disable=invalid-name,too-many-public-methods,too-many-lines
Expand Down Expand Up @@ -585,12 +586,6 @@
),
)

@classmethod
def _get_backend(cls, backend: str, package: "Optional[str]" = None):
"""Returns the class implementing the given backend."""
module = cls._load_backend(backend, package=package)
return getattr(module, f"{backend.title()}Strategy")

@classmethod
def _check_backend_method(cls, backend: str, name: str):
"""Checks that `backend` has a method called `name`.
Expand All @@ -604,6 +599,12 @@
f'"{name}()" method.'
)

@classmethod
def _get_backend(cls, backend: str, package: "Optional[str]" = None):
"""Returns the class implementing the given backend."""
module = cls._load_backend(backend, package=package)
return getattr(module, f"{backend.title()}Strategy")

def _check_method(self, name):
"""Check that backend implements the given method."""
self._check_backend_method(self.backend_name, name)
Expand Down Expand Up @@ -680,12 +681,10 @@
return value
raise UniquenessError("More than one match")

def subjects(
self, predicate=None, object=None # pylint: disable=redefined-builtin
):
"""Returns a generator of subjects for given predicate and object."""
for s, _, _ in self.triples(predicate=predicate, object=object):
yield s
def objects(self, subject=None, predicate=None):
"""Returns a generator of objects for given subject and predicate."""
for _, _, o in self.triples(subject=subject, predicate=predicate):
yield o

def predicates(
self, subject=None, object=None # pylint: disable=redefined-builtin
Expand All @@ -694,40 +693,32 @@
for _, p, _ in self.triples(subject=subject, object=object):
yield p

def objects(self, subject=None, predicate=None):
"""Returns a generator of objects for given subject and predicate."""
for _, _, o in self.triples(subject=subject, predicate=predicate):
yield o

def subject_predicates(
self, object=None
): # pylint: disable=redefined-builtin
"""Returns a generator of (subject, predicate) tuples for given
object."""
for s, p, _ in self.triples(object=object):
yield s, p

def subject_objects(self, predicate=None):
"""Returns a generator of (subject, object) tuples for given
predicate."""
for s, _, o in self.triples(predicate=predicate):
yield s, o
def subjects(
self, predicate=None, object=None # pylint: disable=redefined-builtin
):
"""Returns a generator of subjects for given predicate and object."""
for s, _, _ in self.triples(predicate=predicate, object=object):
yield s

def predicate_objects(self, subject=None):
"""Returns a generator of (predicate, object) tuples for given
subject."""
for _, p, o in self.triples(subject=subject):
yield p, o

def set(self, triple):
"""Convenience method to update the value of object.
def subject_objects(self, predicate=None):
"""Returns a generator of (subject, object) tuples for given
predicate."""
for s, _, o in self.triples(predicate=predicate):
yield s, o

Removes any existing triples for subject and predicate before adding
the given `triple`.
"""
s, p, _ = triple
self.remove(s, p)
self.add(triple)
def subject_predicates(
self, object=None
): # pylint: disable=redefined-builtin
"""Returns a generator of (subject, predicate) tuples for given
object."""
for s, p, _ in self.triples(object=object):
yield s, p

Check warning on line 721 in tripper/triplestore.py

View check run for this annotation

Codecov / codecov/patch

tripper/triplestore.py#L720-L721

Added lines #L720 - L721 were not covered by tests

def has(
self, subject=None, predicate=None, object=None
Expand All @@ -743,6 +734,16 @@
return False
return True

def set(self, triple):
"""Convenience method to update the value of object.

Removes any existing triples for subject and predicate before adding
the given `triple`.
"""
s, p, _ = triple
self.remove(s, p)
self.add(triple)

# Methods providing additional functionality
# ------------------------------------------
def expand_iri(self, iri: str):
Expand Down